Starsector API
Loading...
Searching...
No Matches
PlanetaryShieldIntel.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.intel.bar.events;
2
3import java.awt.Color;
4import java.util.List;
5import java.util.Map;
6import java.util.Set;
7
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.CargoAPI;
11import com.fs.starfarer.api.campaign.FactionAPI;
12import com.fs.starfarer.api.campaign.InteractionDialogAPI;
13import com.fs.starfarer.api.campaign.PlanetAPI;
14import com.fs.starfarer.api.campaign.SectorEntityToken;
15import com.fs.starfarer.api.campaign.econ.MarketAPI;
16import com.fs.starfarer.api.campaign.rules.MemoryAPI;
17import com.fs.starfarer.api.characters.PersonAPI;
18import com.fs.starfarer.api.impl.campaign.ids.Tags;
19import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
20import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
21import com.fs.starfarer.api.ui.SectorMapAPI;
22import com.fs.starfarer.api.ui.TooltipMakerAPI;
23import com.fs.starfarer.api.util.Misc;
24import com.fs.starfarer.api.util.Misc.Token;
25
27
28 public static enum PSIStage {
29 TALK_TO_PILOT,
30 GO_TO_PLANET,
31 DONE,
32 ;
33 }
34
35 public static int FINISHED_XP = 20000;
36 public static int PAY_PILOT_XP = 5000;
37
38 protected PlanetAPI planet;
40
41 protected PSIStage stage;
42 protected int pilotCredits;
43
45 this.planet = planet;
46 this.event = event;
47
48 PersonAPI pilot = event.getPilot();
49 Misc.makeImportant(pilot, "psi");
50 MarketAPI market = event.getPilotMarket();
51 market.addPerson(pilot);
52 market.getCommDirectory().addPerson(pilot);
53
54 pilotCredits = 10000 + 1000 * Misc.random.nextInt(10);
55
56 pilot.getMemoryWithoutUpdate().set("$psi_isPilot", true);
57 pilot.getMemoryWithoutUpdate().set("$psi_eventRef", this);
58 pilot.getMemoryWithoutUpdate().set("$psi_credits", Misc.getDGSCredits(pilotCredits));
59
60 //Misc.makeImportant(planet, "saci");
61 //cache.getMemoryWithoutUpdate().set("$saic_eventRef", this);
62 //Global.getSector().addScript(this);
63
64 stage = PSIStage.TALK_TO_PILOT;
65 }
66
67 @Override
68 protected void notifyEnded() {
69 super.notifyEnded();
70 Global.getSector().removeScript(this);
71
72 PersonAPI pilot = event.getPilot();
73 MarketAPI market = event.getPilotMarket();
74 market.removePerson(pilot);
75 market.getCommDirectory().removePerson(pilot);
76 Misc.makeUnimportant(planet, "psi");
77 }
78
79
80
81 @Override
82 public boolean callEvent(String ruleId, InteractionDialogAPI dialog,
83 List<Token> params, Map<String, MemoryAPI> memoryMap) {
84 String action = params.get(0).getString(memoryMap);
85
86 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
87 CargoAPI cargo = playerFleet.getCargo();
88 //MemoryAPI memory = planet.getMemoryWithoutUpdate();
89
90 PersonAPI pilot = event.getPilot();
91 MarketAPI market = event.getPilotMarket();
92
93 if (action.equals("prepare")) {
94 pilot.getMemoryWithoutUpdate().set("$psi_credits", Misc.getDGSCredits(pilotCredits), 0);
95 pilot.getMemoryWithoutUpdate().set("$psi_playerCredits", Misc.getDGSCredits(cargo.getCredits().get()), 0);
96 } else if (action.equals("canPay")) {
97 return cargo.getCredits().get() >= pilotCredits;
98 } else if (action.equals("payPilot")) {
99 market.removePerson(pilot);
100 market.getCommDirectory().removePerson(pilot);
101
102 cargo.getCredits().subtract(pilotCredits);
103 AddRemoveCommodity.addCreditsLossText(pilotCredits, dialog.getTextPanel());
104 Global.getSector().getPlayerPerson().getStats().addXP(PAY_PILOT_XP, dialog.getTextPanel());
105
106 Misc.makeImportant(planet, "psi");
107 stage = PSIStage.GO_TO_PLANET;
108 sendUpdate(PSIStage.GO_TO_PLANET, dialog.getTextPanel());
109 }
110
111 return true;
112 }
113
114 @Override
115 public void endAfterDelay() {
116 stage = PSIStage.DONE;
117 Misc.makeUnimportant(planet, "psi");
118 super.endAfterDelay();
119 }
120
121 @Override
122 protected void notifyEnding() {
123 super.notifyEnding();
124 }
125
126
127 protected void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode) {
128
129 Color h = Misc.getHighlightColor();
130 Color g = Misc.getGrayColor();
131 float pad = 3f;
132 float opad = 10f;
133
134 float initPad = pad;
135 if (mode == ListInfoMode.IN_DESC) initPad = opad;
136
137 Color tc = getBulletColorForMode(mode);
138
139 bullet(info);
140 boolean isUpdate = getListInfoParam() != null;
141
142 MarketAPI market = event.getPilotMarket();
143
144 if (stage == PSIStage.TALK_TO_PILOT) {
145 info.addPara("Talk to the pilot at %s", initPad, tc, market.getFaction().getBaseUIColor(), market.getName());
146 } else if (stage == PSIStage.GO_TO_PLANET) {
147 info.addPara("Explore the planet", tc, initPad);
148 }
149
150 initPad = 0f;
151
152 unindent(info);
153 }
154
155
156 @Override
157 public void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode) {
158 Color c = getTitleColor(mode);
159 info.setParaSmallInsignia();
160 info.addPara(getName(), c, 0f);
161 info.setParaFontDefault();
162 addBulletPoints(info, mode);
163
164 }
165
166 @Override
167 public void createSmallDescription(TooltipMakerAPI info, float width, float height) {
168 Color h = Misc.getHighlightColor();
169 Color g = Misc.getGrayColor();
170 Color tc = Misc.getTextColor();
171 float pad = 3f;
172 float opad = 10f;
173
174 if (stage == PSIStage.TALK_TO_PILOT) {
175 info.addPara("An old spacer told you a tale about a mysterious red planet. " +
176 "The pilot - the only other survivor of the salvage expedition - may know the planet's location.", opad);
177 } else if (stage == PSIStage.GO_TO_PLANET) {
178 info.addPara("You've talked to the old spacer's pilot comrade and convinced " +
179 "them to divulge the location of the planet.", opad);
180 } else {
181 info.addPara("You've found the planet and uncovered its secret.", opad);
182 }
183
184 addBulletPoints(info, ListInfoMode.IN_DESC);
185
186 }
187
188 @Override
189 public String getIcon() {
190 return Global.getSettings().getSpriteName("intel", "red_planet");
191 }
192
193 @Override
194 public Set<String> getIntelTags(SectorMapAPI map) {
195 Set<String> tags = super.getIntelTags(map);
196 tags.add(Tags.INTEL_STORY);
197 tags.add(Tags.INTEL_EXPLORATION);
198 tags.add(Tags.INTEL_ACCEPTED);
199 tags.add(Tags.INTEL_MISSIONS);
200 return tags;
201 }
202
203 @Override
204 public IntelSortTier getSortTier() {
205 return IntelSortTier.TIER_2;
206 }
207
208 public String getSortString() {
209 return "Red Planet";
210 }
211
212 public String getName() {
213 if (isEnded() || isEnding()) {
214 return "Red Planet - Completed";
215 }
216 return "Red Planet";
217 }
218
219 @Override
220 public FactionAPI getFactionForUIColors() {
221 return super.getFactionForUIColors();
222 }
223
224 public String getSmallDescriptionTitle() {
225 return getName();
226 }
227
228 @Override
229 public SectorEntityToken getMapLocation(SectorMapAPI map) {
230 if (stage == PSIStage.TALK_TO_PILOT) {
231 return event.getPilotMarket().getPrimaryEntity();
232 }
233 return planet;
234 }
235
236 @Override
237 public boolean shouldRemoveIntel() {
238 return super.shouldRemoveIntel();
239 }
240
241 @Override
242 public String getCommMessageSound() {
243 return getSoundMajorPosting();
244 }
245
246}
247
248
249
250
251
252
253
static SettingsAPI getSettings()
Definition Global.java:51
static SectorAPI getSector()
Definition Global.java:59
void sendUpdate(Object listInfoParam, TextPanelAPI textPanel)
boolean callEvent(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
void createSmallDescription(TooltipMakerAPI info, float width, float height)
String getSpriteName(String category, String id)