Starsector API
Loading...
Searching...
No Matches
ShipExplosionFlareVisual.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat;
2
3import java.awt.Color;
4import java.util.EnumSet;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin;
8import com.fs.starfarer.api.combat.CombatEngineLayers;
9import com.fs.starfarer.api.combat.CombatEntityAPI;
10import com.fs.starfarer.api.combat.ShipAPI;
11import com.fs.starfarer.api.combat.ViewportAPI;
12import com.fs.starfarer.api.graphics.SpriteAPI;
13import com.fs.starfarer.api.util.FaderUtil;
14import com.fs.starfarer.api.util.Misc;
15
23public class ShipExplosionFlareVisual extends BaseCombatLayeredRenderingPlugin {
24
25 public static class ShipExplosionFlareParams implements Cloneable {
26 public CombatEntityAPI attachedTo;
27 public Color color;
28 public float flareWidth;
29 public float flareHeight;
30
31 public ShipExplosionFlareParams() {
32 }
33
34 public ShipExplosionFlareParams(CombatEntityAPI attachedTo, Color color, float flareWidth, float flareHeight) {
35 this.attachedTo = attachedTo;
36 this.color = color;
37 this.flareWidth = flareWidth;
38 this.flareHeight = flareHeight;
39 }
40
41 @Override
42 protected ShipExplosionFlareParams clone() {
43 try {
44 return (ShipExplosionFlareParams) super.clone();
45 } catch (CloneNotSupportedException e) {
46 return null; // should never happen
47 }
48 }
49
50 }
51
52 protected ShipExplosionFlareParams p;
53 protected SpriteAPI sprite;
54 protected FaderUtil fader;
55
56 public ShipExplosionFlareVisual(ShipExplosionFlareParams p) {
57 this.p = p;
58 //fader = new FaderUtil(1f, 0f, 2f);
59 //fader.fadeOut();
60 fader = new FaderUtil(0f, 0.25f, 2f);
61 fader.setBounceDown(true);
62 fader.fadeIn();
63 sprite = Global.getSettings().getSprite("graphics/fx/starburst_glow1.png");
64 }
65
66 public float getRenderRadius() {
67 return Math.max(p.flareWidth, p.flareHeight) + 500f;
68 }
69
70
71 @Override
72 public EnumSet<CombatEngineLayers> getActiveLayers() {
73 return EnumSet.of(CombatEngineLayers.ABOVE_PARTICLES_LOWER);
74 }
75
76 public void advance(float amount) {
77 if (Global.getCombatEngine().isPaused()) return;
78
79 fader.advance(amount);
80
81 if (entity != null && p.attachedTo != null) {
82 if (p.attachedTo instanceof ShipAPI) {
83 entity.getLocation().set(((ShipAPI)p.attachedTo).getShieldCenterEvenIfNoShield());
84 } else {
85 entity.getLocation().set(p.attachedTo.getLocation());
86 }
87 }
88 }
89
90 public void init(CombatEntityAPI entity) {
91 super.init(entity);
92 }
93
94 public boolean isExpired() {
95 return fader.isFadedOut();
96 }
97
98 public void render(CombatEngineLayers layer, ViewportAPI viewport) {
99 float x = entity.getLocation().x;
100 float y = entity.getLocation().y;
101
102 float b = fader.getBrightness();
103 if (fader.isFadingIn() && b > 0.01f) {
104 b = (float) Math.sqrt(b);
105 } else {
106 b *= b;
107 }
108 float alphaMult = viewport.getAlphaMult();
109
110 alphaMult *= b;
111
112 float f = 0.5f + 0.5f * b;
113 f = 1f;
114
115 sprite.setColor(p.color);
116 sprite.setSize(p.flareWidth * f, p.flareHeight * f);
117 sprite.setAdditiveBlend();
118 sprite.setAlphaMult(alphaMult);
119 sprite.renderAtCenter(x, y);
120
121 //f *= 0.75f;
122 sprite.setColor(Misc.scaleAlpha(Color.white, 1f));
123 sprite.setSize(p.flareWidth * f, p.flareHeight * f * 0.33f);
124 sprite.setAdditiveBlend();
125 sprite.setAlphaMult(alphaMult);
126 sprite.renderAtCenter(x, y);
127
128// f = 0.5f + 0.5f * b;
129// sprite.setColor(p.color);
130// sprite.setSize(p.flareHeight * f, p.flareWidth * f * 0.5f);
131// sprite.setAdditiveBlend();
132// sprite.setAlphaMult(alphaMult);
133// sprite.renderAtCenter(x, y);
134
135// f *= 0.5f;
136// sprite.setColor(Misc.scaleAlpha(Color.white, b));
137// sprite.setSize(p.flareHeight * f, p.flareWidth * f * 0.5f);
138// sprite.setAdditiveBlend();
139// sprite.setAlphaMult(alphaMult);
140// sprite.renderAtCenter(x, y);
141 }
142
143
144
145}
146
147
static SettingsAPI getSettings()
Definition Global.java:51
static CombatEngineAPI getCombatEngine()
Definition Global.java:63
void render(CombatEngineLayers layer, ViewportAPI viewport)
SpriteAPI getSprite(String filename)