Starsector API
Loading...
Searching...
No Matches
KineticFragmentMissileEffect.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat.threat;
2
3import java.awt.Color;
4
5import org.lwjgl.util.vector.Vector2f;
6
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.combat.CombatEngineAPI;
9import com.fs.starfarer.api.combat.CombatEntityAPI;
10import com.fs.starfarer.api.combat.DamageType;
11import com.fs.starfarer.api.combat.MissileAPI;
12import com.fs.starfarer.api.impl.combat.threat.RoilingSwarmEffect.RoilingSwarmParams;
13import com.fs.starfarer.api.impl.combat.threat.RoilingSwarmEffect.SwarmMember;
14
16
17 public static Color FRINGE_COLOR = new Color(235,255,215,235);
18 public static Color CORE_COLOR = new Color(225,255,205,200);
19
20 public static float OTHER_FRAGMENT_DAMAGE = 100;
21
22 protected void configureMissileSwarmParams(RoilingSwarmParams params) {
23// params.flashFringeColor = new Color(235,255,215,235);
24// params.flashCoreColor = new Color(225,255,205,200);
25
26// params.baseSpringConstant *= 2f;
27// params.springConstantNegativeRange *= 2f;
28 params.maxOffset = 40f;
29
30 params.maxSpeed = missile.getMaxSpeed() + 10f;
31 params.outspeedAttachedEntityBy = 0f;
32
33 //params.flashFringeColor = Misc.setAlpha(FRINGE_COLOR, 50);
34 params.flashFringeColor = FRINGE_COLOR;
35 params.flashCoreColor = CORE_COLOR;
36
37 params.flashCoreRadiusMult = 0f;
38 //params.renderFlashOnSameLayer = true;
39 params.flashRadius = 30f;
40 params.autoscale = true;
41 //params.preFlashDelay = 0.5f * (float) Math.random();
42
43// params.flashFrequency = 40f;
44// params.flashProbability = 1f;
45 }
46
48 boolean first = true;
49 for (SwarmMember p : missileSwarm.members) {
50 p.scaler.setBrightness(p.scale);
51 if (first) {
52 p.scaler.setBounceDown(false);
53 p.scaler.fadeIn();
54 } else {
55// p.scaler.setBounceUp(false);
56// p.scaler.fadeOut();
57 p.keepScale = true;
58 }
59 p.flash = null;
60 p.flash();
61 p.flash.setBounceDown(false);
62 first = false;
63 }
64 }
65
67 return 4;
68 }
69
70 protected int getEMPResistance() {
71 return 3;
72 }
73
74 protected boolean explodeOnFizzling() {
75 return false;
76 }
77
79 return true;
80 }
81
82 @Override
83 protected FragmentBehaviorOnImpact getOtherFragmentBehaviorOnImpact() {
84 return FragmentBehaviorOnImpact.STOP_AND_FADE;
85 }
86
87 protected void reportFragmentHit(MissileAPI missile, SwarmMember p, RoilingSwarmEffect swarm, CombatEntityAPI target) {
89 Color color = FRINGE_COLOR;
90 //color = Misc.setAlpha(color, 255);
91 float size = 80f; // not radius
92 engine.addHitParticle(p.loc, new Vector2f(), size, 0.5f, color);
93 engine.addHitParticle(p.loc, new Vector2f(), size * 0.25f, 1f, CORE_COLOR);
94
95 float mult = p.fader.getBrightness();
96 if (mult > 0.8f) mult = 1f;
98 false, false, missile.getSource(), true);
99
100// engine.addNegativeParticle(p.loc, new Vector2f(), 300f, 0f, 0.5f, Color.white);
101 }
102
103
104// protected String getExplosionSoundId() {
105// return "devastator_explosion";
106// }
107
108}
109
110
111
112
113
114
115
116
static CombatEngineAPI getCombatEngine()
Definition Global.java:69
void reportFragmentHit(MissileAPI missile, SwarmMember p, RoilingSwarmEffect swarm, CombatEntityAPI target)
void swarmCreated(MissileAPI missile, RoilingSwarmEffect missileSwarm, RoilingSwarmEffect sourceSwarm)
void setBounceDown(boolean bounceDown)
void setBrightness(float brightness)
void addHitParticle(Vector2f loc, Vector2f vel, float size, float brightness, float duration, Color color)
void applyDamage(CombatEntityAPI entity, Vector2f point, float damageAmount, DamageType damageType, float empAmount, boolean bypassShields, boolean dealsSoftFlux, Object source, boolean playSound)