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}