001package com.fs.starfarer.api.impl.combat;
002
003import java.awt.Color;
004
005import com.fs.starfarer.api.combat.CombatEngineAPI;
006import com.fs.starfarer.api.combat.EveryFrameWeaponEffectPlugin;
007import com.fs.starfarer.api.combat.ShipAPI;
008import com.fs.starfarer.api.combat.WeaponAPI;
009import com.fs.starfarer.api.graphics.SpriteAPI;
010import com.fs.starfarer.api.util.FaderUtil;
011import com.fs.starfarer.api.util.Misc;
012
013public class LightsEffect implements EveryFrameWeaponEffectPlugin {
014
015        private Color base = null;
016        private FaderUtil fader = new FaderUtil(1f, 0.5f, 0.5f);
017        private FaderUtil pulse = new FaderUtil(1f, 2f, 2f, true, true);
018        
019        public LightsEffect() {
020                fader.fadeIn();
021                pulse.fadeIn();
022        }
023
024
025        public void advance(float amount, CombatEngineAPI engine, WeaponAPI weapon) {
026                if (engine.isPaused()) return;
027
028                fader.advance(amount);
029                pulse.advance(amount);
030                
031                SpriteAPI sprite = weapon.getSprite();
032                if (base == null) {
033                        base = sprite.getColor();
034                }
035                
036                ShipAPI ship = weapon.getShip();
037                if (ship.isHulk()) {
038                        fader.fadeOut();
039                } else {
040                        if (ship.getFluxTracker().isVenting()) {
041                                fader.fadeOut();
042                        } else {
043                                fader.fadeIn();
044                        }
045                }
046                
047                float alphaMult = fader.getBrightness() * (0.75f + pulse.getBrightness() * 0.25f);
048                if (ship.getFluxTracker().isOverloaded()) {
049                        alphaMult = (float) Math.random() * fader.getBrightness();
050                }
051                
052                Color color = Misc.scaleAlpha(base, alphaMult);
053                //System.out.println(alphaMult);
054                sprite.setColor(color);
055        }
056        
057        
058        
059        
060}