Starsector API
Loading...
Searching...
No Matches
GoDarkAbility.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.abilities;
2
3import java.awt.Color;
4
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.CampaignFleetAPI;
7import com.fs.starfarer.api.fleet.FleetMemberViewAPI;
8import com.fs.starfarer.api.impl.campaign.ids.Stats;
9import com.fs.starfarer.api.ui.LabelAPI;
10import com.fs.starfarer.api.ui.TooltipMakerAPI;
11import com.fs.starfarer.api.util.Misc;
12
13public class GoDarkAbility extends BaseToggleAbility {
14
15 //public static final float MAX_BURN_MULT = 0.5f;
16 public static final float DETECTABILITY_MULT = 0.5f;
17
18// public String getSpriteName() {
19// return Global.getSettings().getSpriteName("abilities", Abilities.GO_DARK);
20// }
21
22
23
24 @Override
25 protected String getActivationText() {
26 return "Going dark";
27 }
28
29 @Override
30 protected String getDeactivationText() {
31 //return "Restoring power";
32 return null;
33 }
34
35
36 @Override
37 protected void activateImpl() {
38// if (entity.isInCurrentLocation()) {
39// entity.addFloatingText("Going dark", entity.getFaction().getBaseUIColor(), 0.5f);
40// }
41
42// AbilityPlugin transponder = entity.getAbility(Abilities.TRANSPONDER);
43// if (transponder != null && transponder.isActive()) {
44// transponder.deactivate();
45// }
46// AbilityPlugin sb = entity.getAbility(Abilities.SUSTAINED_BURN);
47// if (sb != null && sb.isActive()) {
48// sb.deactivate();
49// }
50 }
51
52 @Override
53 protected void applyEffect(float amount, float level) {
54 CampaignFleetAPI fleet = getFleet();
55 if (fleet == null) return;
56
57 if (level < 1) level = 0;
58
60 //float b = fleet.getStats().getDynamic().getValue(Stats.GO_DARK_BURN_PENALTY_MULT);
61
62 fleet.getStats().getDetectedRangeMod().modifyMult(getModId(), 1f + (DETECTABILITY_MULT * d - 1f) * level, "Going dark");
63// float MAX_BURN_MULT = 0.5f;
64// float b = 1f;
65// fleet.getStats().getFleetwideMaxBurnMod().modifyMult(getModId(), 1f + (MAX_BURN_MULT - 1f) * level * b, "Going dark");
66
67 fleet.goSlowOneFrame();
68
69 for (FleetMemberViewAPI view : fleet.getViews()) {
70 view.getContrailColor().shift(getModId(), new Color(0,0,0,0), 1f, 1f, 1f);
71 view.getContrailDurMult().shift(getModId(), 0f, 1f, 1f, 1f);
72 //view.getContrailWidthMult().shift(getModId(), 0.25f, 1f, 1f, 1f);
73 view.getEngineGlowSizeMult().shift(getModId(), 0.5f, 1f, 1f, 1f);
74 view.getEngineHeightMult().shift(getModId(), 0.5f, 1f, 1f, 1f);
75 //view.getEngineWidthMult().shift(getModId(), 3f, 1f, 1f, 1f);
76 }
77
78
79// if (level > 0) {
80// SlipstreamTerrainPlugin slipstream = SlipstreamTerrainPlugin.getSlipstreamPlugin(fleet.getContainingLocation());
81// if (slipstream != null) {
82// slipstream.disrupt(fleet, 0.1f);
83// }
84// }
85 }
86
87 @Override
88 protected void deactivateImpl() {
90 }
91
92 @Override
93 protected void cleanupImpl() {
94 CampaignFleetAPI fleet = getFleet();
95 if (fleet == null) return;
96
98 //fleet.getStats().getFleetwideMaxBurnMod().unmodifyMult(getModId());
99 }
100
101// @Override
102// public float getActivationDays() {
103// return 0.1f;
104// }
105//
106// @Override
107// public float getDeactivationDays() {
108// return 0f;
109// }
110
111 @Override
112 public boolean showProgressIndicator() {
113 return false;
114 }
115
116 @Override
117 public boolean showActiveIndicator() {
118 return isActive();
119 }
120
121
122 @Override
123 public void createTooltip(TooltipMakerAPI tooltip, boolean expanded) {
124 Color gray = Misc.getGrayColor();
125 Color highlight = Misc.getHighlightColor();
126
127 String status = " (off)";
128 if (turnedOn) {
129 status = " (on)";
130 }
131
133 LabelAPI title = tooltip.addTitle(spec.getName() + status);
134 title.highlightLast(status);
135 title.setHighlightColor(gray);
136 } else {
137 tooltip.addSpacer(-10f);
138 }
139
140 float pad = 10f;
141
142
143// tooltip.addPara("Turns off all non-essential systems, reducing the range" +
144// " at which the fleet can be detected by %s and reducing the maximum burn" +
145// " level by %s.", pad,
146// highlight,
147// "" + (int)((1f - DETECTABILITY_MULT) * 100f) + "%",
148// "" + (int)((1f - MAX_BURN_MULT) * 100f) + "%"
149// );
150 tooltip.addPara("Turns off all non-essential systems, reducing the range" +
151 " at which the fleet can be detected by %s and forcing the fleet to %s*." +
152 "", pad,
153 highlight,
154 "" + (int)((1f - DETECTABILITY_MULT) * 100f) + "%",
155 "move slowly"
156 );
157 //tooltip.addPara("Disables the transponder when activated.", pad);
158
159 tooltip.addPara("*A fleet is considered slow-moving at a burn level of half that of its slowest ship.", gray, pad);
160// tooltip.addPara("*Maximum burn level of %s", pad, gray,
161// Misc.getDarkHighlightColor(),
162// "" + Misc.getGoSlowBurnLevel(getFleet()));
163 addIncompatibleToTooltip(tooltip, expanded);
164 }
165
166 public boolean hasTooltip() {
167 return true;
168 }
169
170
171}
172
173
174
175
176
static boolean CODEX_TOOLTIP_MODE
Definition Global.java:15
void modifyMult(String source, float value)
void addIncompatibleToTooltip(TooltipMakerAPI tooltip, boolean expanded)
void createTooltip(TooltipMakerAPI tooltip, boolean expanded)
static Color getGrayColor()
Definition Misc.java:826
static Color getHighlightColor()
Definition Misc.java:792
List< FleetMemberViewAPI > getViews()
void setHighlightColor(Color color)
void highlightLast(String substring)
LabelAPI addPara(String format, float pad, Color hl, String... highlights)
UIComponentAPI addSpacer(float height)