Starsector API
Loading...
Searching...
No Matches
LightsEffect.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat;
2
3import java.awt.Color;
4
5import com.fs.starfarer.api.combat.CombatEngineAPI;
6import com.fs.starfarer.api.combat.EveryFrameWeaponEffectPlugin;
7import com.fs.starfarer.api.combat.ShipAPI;
8import com.fs.starfarer.api.combat.WeaponAPI;
9import com.fs.starfarer.api.graphics.SpriteAPI;
10import com.fs.starfarer.api.util.FaderUtil;
11import com.fs.starfarer.api.util.Misc;
12
13public class LightsEffect implements EveryFrameWeaponEffectPlugin {
14
15 private Color base = null;
16 private FaderUtil fader = new FaderUtil(1f, 0.5f, 0.5f);
17 private FaderUtil pulse = new FaderUtil(1f, 2f, 2f, true, true);
18
19 public LightsEffect() {
20 fader.fadeIn();
21 pulse.fadeIn();
22 }
23
24
25 public void advance(float amount, CombatEngineAPI engine, WeaponAPI weapon) {
26 if (engine.isPaused()) return;
27
28 fader.advance(amount);
29 pulse.advance(amount);
30
31 SpriteAPI sprite = weapon.getSprite();
32 if (base == null) {
33 base = sprite.getColor();
34 }
35
36 ShipAPI ship = weapon.getShip();
37 if (ship.isHulk()) {
38 fader.fadeOut();
39 } else {
40 if (ship.getFluxTracker().isVenting()) {
41 fader.fadeOut();
42 } else {
43 fader.fadeIn();
44 }
45 }
46
47 float alphaMult = fader.getBrightness() * (0.75f + pulse.getBrightness() * 0.25f);
48 if (ship.getFluxTracker().isOverloaded()) {
49 alphaMult = (float) Math.random() * fader.getBrightness();
50 }
51
52 Color color = Misc.scaleAlpha(base, alphaMult);
53 //System.out.println(alphaMult);
54 sprite.setColor(color);
55 }
56
57
58
59
60}
void advance(float amount, CombatEngineAPI engine, WeaponAPI weapon)