1package com.fs.starfarer.api.impl.combat;
4import java.util.EnumSet;
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;
25 public static class ShipExplosionFlareParams
implements Cloneable {
26 public CombatEntityAPI attachedTo;
28 public float flareWidth;
29 public float flareHeight;
31 public ShipExplosionFlareParams() {
34 public ShipExplosionFlareParams(CombatEntityAPI attachedTo, Color color,
float flareWidth,
float flareHeight) {
35 this.attachedTo = attachedTo;
37 this.flareWidth = flareWidth;
38 this.flareHeight = flareHeight;
42 protected ShipExplosionFlareParams clone() {
44 return (ShipExplosionFlareParams) super.clone();
45 }
catch (CloneNotSupportedException e) {
52 protected ShipExplosionFlareParams
p;
60 fader =
new FaderUtil(0f, 0.25f, 2f);
61 fader.setBounceDown(
true);
67 return Math.max(
p.flareWidth,
p.flareHeight) + 500f;
73 return EnumSet.of(CombatEngineLayers.ABOVE_PARTICLES_LOWER);
79 fader.advance(amount);
81 if (entity !=
null &&
p.attachedTo !=
null) {
82 if (
p.attachedTo instanceof ShipAPI) {
83 entity.getLocation().set(((ShipAPI)
p.attachedTo).getShieldCenterEvenIfNoShield());
85 entity.getLocation().set(
p.attachedTo.getLocation());
90 public void init(CombatEntityAPI entity) {
95 return fader.isFadedOut();
98 public void render(CombatEngineLayers layer, ViewportAPI viewport) {
99 float x = entity.getLocation().x;
100 float y = entity.getLocation().y;
102 float b =
fader.getBrightness();
103 if (
fader.isFadingIn() && b > 0.01f) {
104 b = (float) Math.sqrt(b);
108 float alphaMult = viewport.getAlphaMult();
112 float f = 0.5f + 0.5f * b;
116 sprite.setSize(
p.flareWidth * f,
p.flareHeight * f);
117 sprite.setAdditiveBlend();
118 sprite.setAlphaMult(alphaMult);
119 sprite.renderAtCenter(x, y);
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);
static SettingsAPI getSettings()
static CombatEngineAPI getCombatEngine()
void render(CombatEngineLayers layer, ViewportAPI viewport)
ShipExplosionFlareVisual(ShipExplosionFlareParams p)
EnumSet< CombatEngineLayers > getActiveLayers()
ShipExplosionFlareParams p
void init(CombatEntityAPI entity)
void advance(float amount)
SpriteAPI getSprite(String filename)