Starsector API
Loading...
Searching...
No Matches
HumanShipShroudCreator.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.combat.dweller;
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.MutableShipStatsAPI;
9import com.fs.starfarer.api.combat.ShipAPI;
10import com.fs.starfarer.api.combat.ShipAPI.HullSize;
11import com.fs.starfarer.api.impl.campaign.ids.Tags;
12import com.fs.starfarer.api.impl.combat.RiftLanceEffect;
13import com.fs.starfarer.api.impl.combat.dweller.DwellerShroud.DwellerShroudParams;
14import com.fs.starfarer.api.impl.combat.dweller.DwellerShroud.ShroudNegativeParticleFilter;
15import com.fs.starfarer.api.loading.HullModSpecAPI;
16import com.fs.starfarer.api.util.Misc;
17
19 @Override
20 public void initBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id) {
21 }
22
23 @Override
24 public void initAfterShipCreation(ShipAPI ship, String id) {
25 }
26
27 @Override
28 public void initAfterShipAddedToCombatEngine(ShipAPI ship, String id) {
29 }
30
31 @Override
32 public void initInCombat(ShipAPI ship) {
33 DwellerShroud shroud = createShroud(ship);
34 //setOverloadColorAndText(ship, shroud);
35 Color color = Misc.setAlpha(Misc.setBrightness(shroud.getParams().flashFringeColor, 255), 255);
36 ship.getFluxTracker().setOverloadColor(color);
37 }
38
39 @Override
40 protected void modifyBaselineShroudParams(ShipAPI ship, DwellerShroudParams params) {
41 //params.maxOffset = ship.getCollisionRadius();
42 float maxOffset = 100f;
43 float scale = 1f;
44 float overloadGlowScale = 1f;
45 switch (ship.getHullSize()) {
46 case CAPITAL_SHIP:
47 maxOffset = 150f;
48 scale = 1.75f;
49 overloadGlowScale = 0.75f;
50 break;
51 case CRUISER:
52 maxOffset = 120f;
53 scale = 1.5f;
54 overloadGlowScale = 0.75f;
55 break;
56 case DESTROYER:
57 maxOffset = 100f;
58 scale = 1.25f;
59 overloadGlowScale = 0.5f;
60 break;
61 case FRIGATE:
62 case FIGHTER:
63 overloadGlowScale = 0.5f;
64 maxOffset = 75f;
65 break;
66 }
67 //params.maxOffset = ship.getCollisionRadius();
68 params.maxOffset = maxOffset * 0.5f;
69 params.initialMembers = 0;
70 params.baseMembersToMaintain = params.initialMembers;
71
72 params.spawnOffsetMult = 0.75f;
73
74 int num = (int) (ship.getCollisionRadius() * ship.getCollisionRadius() / 800);
75 if (num < 15) num = 15;
76 if (ship.isDestroyer() && num < 22) num = 22;
77 if (num > 150) num = 150;
78 params.baseMembersToMaintain = num;
79 params.initialMembers = num;
80// params.flashProbability = 0f;
81// params.flashFrequency = 0f;
82// params.alphaMult = 0.25f;
83// params.baseSpriteSize = 128f * 1.5f * 0.67f * 1.5f;
84
85 //params.alphaMult = 0.25f;
86
87 float numShroudMods = 0;
88 for (String modId : ship.getVariant().getHullMods()) {
90 if (spec.hasTag(Tags.SHROUDED)) numShroudMods++;
91 }
92
93 params.alphaMult = 0.25f + (numShroudMods - 1f) * 0.1f;
94 if (params.alphaMult > 0.75f) params.alphaMult = 0.75f;
95 if (params.alphaMult < 0.25f) params.alphaMult = 0.25f;
96
97 params.baseSpriteSize *= scale;
98
99 //params.negativeParticleAlphaIntOverride = 100;
100 params.negativeParticleSpeedCap = ship.getMaxSpeedWithoutBoost() + 100f;
101 params.negativeParticleColorOverride = RiftLanceEffect.getColorForDarkening(ship.getSpriteAPI().getAverageColor());
102 //params.negativeParticleSizeMult = 1.5f;
103 params.negativeParticleSizeMult = scale;
104
105 params.negativeParticleAreaMult = ship.getCollisionRadius() / params.maxOffset;
106
107// params.negativeParticleAlphaIntOverride = 50;
108// params.negativeParticleSizeMult = 0.5f;
109// params.negativeParticleNumBase *= 3;
110
111 params.overloadGlowSizeMult *= overloadGlowScale;
112 params.overloadArcOffsetMult = params.negativeParticleAreaMult * 0.8f;
113
114// params.overloadArcThickness *= 2f;
115// params.overloadArcCoreThickness *= 2f;
116
117 params.generateOffsetAroundAttachedEntityOval = true;
118// params.offsetModifier = new SwarmMemberOffsetModifier() {
119// @Override
120// public void modifyOffset(SwarmMember p) {
121// p.offset.x *= 0.75f;
122// }
123// };
124
125 params.negativeParticleFilter = new ShroudNegativeParticleFilter() {
126 @Override
127 public boolean isParticleOk(DwellerShroud shroud, Vector2f loc) {
128 if (shroud.getAttachedTo() instanceof ShipAPI) {
129 ShipAPI ship = (ShipAPI) shroud.getAttachedTo();
130 float targetingRadius = Misc.getTargetingRadius(loc, ship, false);
131 float dist = Misc.getDistance(ship.getLocation(), loc);
132 float pad = Math.max(50f, targetingRadius * 0.2f);
133 pad = params.maxOffset;
134 return dist < targetingRadius + pad && dist > targetingRadius * 0.75f;
135 }
136 return true;
137 }
138
139 };
140 }
141 }
static SettingsAPI getSettings()
Definition Global.java:57
void modifyBaselineShroudParams(ShipAPI ship, DwellerShroudParams params)
void initBeforeShipCreation(HullSize hullSize, MutableShipStatsAPI stats, String id)
static Color setAlpha(Color color, int alpha)
Definition Misc.java:1316
static Color setBrightness(Color color, int brightness)
Definition Misc.java:5196
static float getDistance(SectorEntityToken from, SectorEntityToken to)
Definition Misc.java:599
static float getTargetingRadius(Vector2f from, CombatEntityAPI target, boolean considerShield)
Definition Misc.java:1349
HullModSpecAPI getHullModSpec(String modId)
void setOverloadColor(Color overloadColor)