1package com.fs.starfarer.api.impl.combat;
4import java.util.EnumSet;
6import org.lwjgl.opengl.GL11;
7import org.lwjgl.util.vector.Vector2f;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.combat.CombatEngineLayers;
11import com.fs.starfarer.api.combat.CombatEntityAPI;
12import com.fs.starfarer.api.combat.DamageAPI;
13import com.fs.starfarer.api.combat.MutableShipStatsAPI;
14import com.fs.starfarer.api.combat.ShipAPI;
15import com.fs.starfarer.api.combat.ShipSystemAPI;
16import com.fs.starfarer.api.combat.ViewportAPI;
17import com.fs.starfarer.api.combat.listeners.DamageTakenModifier;
35 public EnumSet<CombatEngineLayers> getActiveLayers() {
37 return EnumSet.of(CombatEngineLayers.ABOVE_PARTICLES_LOWER);
40 public boolean isExpired() {
44 public float getRenderRadius() {
45 return ship.getCollisionRadius() + 100f;
49 public void advance(
float amount) {
50 super.advance(amount);
52 entity.getLocation().set(ship.getLocation());
53 if (Global.getCombatEngine().isPaused())
return;
57 public void render(CombatEngineLayers layer, ViewportAPI viewport) {
58 super.render(layer, viewport);
60 float alphaMult = viewport.getAlphaMult();
62 ShipSystemAPI system = ship.getPhaseCloak();
63 if (system ==
null) system = ship.getSystem();
64 alphaMult *= system.getEffectLevel();
65 if (alphaMult <= 0f)
return;
68 GL11.glTranslatef(ship.getLocation().x, ship.getLocation().y, 0);
69 GL11.glRotatef(ship.getFacing(), 0, 0, 1);
76 protected TriadShieldVisuals
visuals =
null;
78 public String
modifyDamageTaken(Object param, CombatEntityAPI target, DamageAPI damage, Vector2f point,
boolean shieldHit) {
82 public void apply(MutableShipStatsAPI stats, String
id, State state,
float effectLevel) {
84 boolean player =
false;
85 if (stats.getEntity() instanceof ShipAPI) {
86 ship = (ShipAPI) stats.getEntity();
88 id =
id +
"_" + ship.getId();
94 visuals =
new TriadShieldVisuals(ship,
this);
96 ship.addListener(
this);
103 if (state == State.COOLDOWN || state == State.IDLE) {
108 ShipSystemAPI system = ship.getPhaseCloak();
109 if (system ==
null) system = ship.getSystem();
113 float jitterLevel = effectLevel;
114 if (state == State.OUT) {
115 jitterLevel *= jitterLevel;
117 float jitterRangeBonus = jitterLevel * 0f;
118 if (state == State.IN || state == State.ACTIVE) {
120 }
else if (state == State.OUT) {
133 if (jitterLevel > 0) {
134 ship.setCircularJitter(
true);
135 ship.setJitter(
this,
JITTER_COLOR, jitterLevel, 1, 0f, 7f + jitterRangeBonus);
136 ship.setJitterUnder(
this,
JITTER_UNDER_COLOR, jitterLevel, 11, minJitter, minJitter + jitterRangeBonus);
141 public void unapply(MutableShipStatsAPI stats, String
id) {
143 boolean player =
false;
144 if (stats.getEntity() instanceof ShipAPI) {
145 ship = (ShipAPI) stats.getEntity();
147 id =
id +
"_" + ship.getId();
155 public StatusData
getStatusData(
int index, State state,
float effectLevel) {
static CombatEngineAPI getCombatEngine()
void apply(MutableShipStatsAPI stats, String id, State state, float effectLevel)
String modifyDamageTaken(Object param, CombatEntityAPI target, DamageAPI damage, Vector2f point, boolean shieldHit)
TriadShieldVisuals visuals
StatusData getStatusData(int index, State state, float effectLevel)
void unapply(MutableShipStatsAPI stats, String id)
static Color JITTER_COLOR
static Color JITTER_UNDER_COLOR