Starsector API
Loading...
Searching...
No Matches
ListenerUtil.java
Go to the documentation of this file.
1package com.fs.starfarer.api.campaign.listeners;
2
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Comparator;
6import java.util.List;
7import java.util.Map;
8
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.BattleAPI;
11import com.fs.starfarer.api.campaign.CampaignEventListener.FleetDespawnReason;
12import com.fs.starfarer.api.campaign.CampaignFleetAPI;
13import com.fs.starfarer.api.campaign.CargoAPI;
14import com.fs.starfarer.api.campaign.CargoStackAPI;
15import com.fs.starfarer.api.campaign.CoreUITabId;
16import com.fs.starfarer.api.campaign.FactionAPI;
17import com.fs.starfarer.api.campaign.FleetInflater;
18import com.fs.starfarer.api.campaign.InteractionDialogAPI;
19import com.fs.starfarer.api.campaign.LocationAPI;
20import com.fs.starfarer.api.campaign.PlanetAPI;
21import com.fs.starfarer.api.campaign.PlayerMarketTransaction;
22import com.fs.starfarer.api.campaign.SectorEntityToken;
23import com.fs.starfarer.api.campaign.SectorEntityToken.VisibilityLevel;
24import com.fs.starfarer.api.campaign.econ.Industry;
25import com.fs.starfarer.api.campaign.econ.Industry.IndustryTooltipMode;
26import com.fs.starfarer.api.campaign.econ.MarketAPI;
27import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
28import com.fs.starfarer.api.campaign.listeners.GroundRaidObjectivesListener.RaidResultData;
29import com.fs.starfarer.api.campaign.listeners.IndustryOptionProvider.IndustryOptionData;
30import com.fs.starfarer.api.campaign.listeners.SubmarketInteractionListener.SubmarketInteractionType;
31import com.fs.starfarer.api.campaign.rules.MemoryAPI;
32import com.fs.starfarer.api.combat.CollisionGridAPI;
33import com.fs.starfarer.api.combat.MutableStat;
34import com.fs.starfarer.api.combat.ViewportAPI;
35import com.fs.starfarer.api.fleet.FleetMemberAPI;
36import com.fs.starfarer.api.impl.campaign.BattleAutoresolverPluginImpl.FleetAutoresolveData;
37import com.fs.starfarer.api.impl.campaign.enc.EncounterPoint;
38import com.fs.starfarer.api.impl.campaign.enc.EncounterPointProvider;
39import com.fs.starfarer.api.impl.campaign.graid.GroundRaidObjectivePlugin;
40import com.fs.starfarer.api.impl.campaign.intel.FactionCommissionIntel;
41import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathCellsIntel;
42import com.fs.starfarer.api.impl.campaign.intel.events.HostileActivityEventIntel;
43import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidType;
44import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.TempData;
45import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamManager;
46import com.fs.starfarer.api.input.InputEventAPI;
47import com.fs.starfarer.api.ui.TooltipMakerAPI;
48import com.fs.starfarer.api.util.WeightedRandomPicker;
49
50public class ListenerUtil {
51
52 public static List<CampaignInputListener> getSortedInputListeners() {
53 List<CampaignInputListener> list = Global.getSector().getListenerManager().getListeners(CampaignInputListener.class);
54 Collections.sort(list, new Comparator<CampaignInputListener>() {
55 public int compare(CampaignInputListener o1, CampaignInputListener o2) {
57 }
58 });
59 return list;
60 }
61 public static void processCampaignInputPreCore(List<InputEventAPI> events) {
63 x.processCampaignInputPreCore(events);
64 }
65 }
66 public static void processCampaignInputPostCore(List<InputEventAPI> events) {
68 x.processCampaignInputPostCore(events);
69 }
70 }
71 public static void processCampaignInputPreFleetControl(List<InputEventAPI> events) {
73 x.processCampaignInputPreFleetControl(events);
74 }
75 }
76
77 public static void reportPlayerSurveyedPlanet(PlanetAPI planet) {
79 x.reportPlayerSurveyedPlanet(planet);
80 }
81 }
82
83 public static void reportPlayerColonizedPlanet(PlanetAPI planet) {
85 x.reportPlayerColonizedPlanet(planet);
86 }
87 }
88
89 public static void reportPlayerAbandonedColony(MarketAPI colony) {
91 x.reportPlayerAbandonedColony(colony);
92 }
93 }
94
97 x.reportAboutToShowLootToPlayer(loot, dialog);
98 }
99 }
100
103 x.reportSpecialCargoGainedFromRecoveredDerelict(loot, dialog);
104 }
105 }
106
107
108 public static void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param) {
110 x.reportFleetDespawnedToListener(fleet, reason, param);
111 }
112 }
113
114 public static void reportBattleOccurred(CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner, BattleAPI battle) {
116 x.reportBattleOccurred(fleet, primaryWinner, battle);
117 }
118 }
119
120 public static void reportEconomyTick(int iterIndex) {
122 x.reportEconomyTick(iterIndex);
123 }
124 }
125 public static void reportEconomyMonthEnd() {
127 x.reportEconomyMonthEnd();
128 }
129 }
130
131 public static void reportEntityDiscovered(SectorEntityToken entity) {
133 x.reportEntityDiscovered(entity);
134 }
135 }
136
137
138 public static void reportObjectiveChangedHands(SectorEntityToken objective, FactionAPI from, FactionAPI to) {
140 x.reportObjectiveChangedHands(objective, from, to);
141 }
142 }
143 public static void reportObjectiveDestroyed(SectorEntityToken objective, SectorEntityToken stableLocation, FactionAPI enemy) {
145 x.reportObjectiveDestroyed(objective, stableLocation, enemy);
146 }
147 }
148
149 public static void reportRaidForValuablesFinishedBeforeCargoShown(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, CargoAPI cargo) {
151 x.reportRaidForValuablesFinishedBeforeCargoShown(dialog, market, actionData, cargo);
152 }
153 }
154 public static void reportRaidToDisruptFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, Industry industry) {
156 x.reportRaidToDisruptFinished(dialog, market, actionData, industry);
157 }
158 }
159
160 public static void reportTacticalBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData) {
162 x.reportTacticalBombardmentFinished(dialog, market, actionData);
163 }
164 }
165
166 public static void reportSaturationBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData) {
168 x.reportSaturationBombardmentFinished(dialog, market, actionData);
169 }
170 }
171
172 public static void reportExtraSalvageShown(SectorEntityToken entity) {
174 x.reportExtraSalvageShown(entity);
175 }
176 }
177
178 public static void reportPlayerOpenedSubmarket(SubmarketAPI submarket, SubmarketInteractionType type) {
180 x.reportPlayerOpenedSubmarket(submarket, type);
181 }
182 }
183
184 public static void reportPlayerOpenedMarket(MarketAPI market) {
186 x.reportPlayerOpenedMarket(market);
187 }
188 }
189
190 public static void reportPlayerClosedMarket(MarketAPI market) {
192 x.reportPlayerClosedMarket(market);
193 }
194 }
195
198 x.reportPlayerOpenedMarketAndCargoUpdated(market);
199 }
200 }
201
204 x.reportPlayerMarketTransaction(transaction);
205 }
206 }
207
208 public static void modifyRaidObjectives(MarketAPI market, SectorEntityToken entity, List<GroundRaidObjectivePlugin> objectives, RaidType type, int marineTokens, int priority) {
210 x.modifyRaidObjectives(market, entity, objectives, type, marineTokens, priority);
211 }
212 }
213
214 public static void reportRaidObjectivesAchieved(RaidResultData data, InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap) {
216 x.reportRaidObjectivesAchieved(data, dialog, memoryMap);
217 }
218 }
219
220 public static void addCommodityTooltipSectionAfterPrice(TooltipMakerAPI info, float width, boolean expanded, CargoStackAPI stack) {
222 x.addSectionAfterPrice(info, width, expanded, stack);
223 }
224 }
225
226 public static void reportCargoScreenOpened() {
228 x.reportCargoScreenOpened();
229 }
230 }
231
232 public static void reportSubmarketCargoAndShipsUpdated(SubmarketAPI submarket) {
234 x.reportSubmarketCargoAndShipsUpdated(submarket);
235 }
236 }
237
238 public static void reportPlayerLeftCargoPods(SectorEntityToken entity) {
240 x.reportPlayerLeftCargoPods(entity);
241 }
242 }
243
246 x.reportPlayerNonMarketTransaction(transaction, dialog);
247 }
248 }
249
250 public static void reportSubmarketOpened(SubmarketAPI submarket) {
252 x.reportSubmarketOpened(submarket);
253 }
254 }
255
256 public static void printOtherFactors(TooltipMakerAPI text, SectorEntityToken entity) {
258 x.printOtherFactors(text, entity);
259 }
260 }
261
262 public static void modifyMarineLossesStatPreRaid(MarketAPI market, List<GroundRaidObjectivePlugin> objectives, MutableStat stat) {
264 x.modifyMarineLossesStatPreRaid(market, objectives, stat);
265 }
266 }
267
270 x.reportFleetTransitingGate(fleet, gateFrom, gateTo);
271 }
272 }
273
274 public static void reportShipsRecovered(List<FleetMemberAPI> ships, InteractionDialogAPI dialog) {
276 x.reportShipsRecovered(ships, dialog);
277 }
278 }
279
280 public static void reportCurrentLocationChanged(LocationAPI prev, LocationAPI curr) {
282 x.reportCurrentLocationChanged(prev, curr);
283 }
284 }
285
286 public static void reportColonyAboutToBeDecivilized(MarketAPI market, boolean fullyDestroyed) {
288 x.reportColonyAboutToBeDecivilized(market, fullyDestroyed);
289 }
290}
291 public static void reportColonyDecivilized(MarketAPI market, boolean fullyDestroyed) {
293 x.reportColonyDecivilized(market, fullyDestroyed);
294 }
295 }
296
299 x.updateSlipstreamBlockers(grid, manager);
300 }
301 }
302 public static void updateSlipstreamConfig(String prevConfig, WeightedRandomPicker<String> nextConfigPicker,
303 SlipstreamManager manager) {
305 x.updateSlipstreamConfig(prevConfig, nextConfigPicker, manager);
306 }
307 }
308
309 public static int countOtherFactors(SectorEntityToken entity) {
310 int count = 0;
312 if (x.isActiveFactorFor(entity)) count++;
313 }
314 return count;
315 }
316 public static boolean hasOtherFactors(SectorEntityToken entity) {
317 return countOtherFactors(entity) > 0;
318 }
319
320 public static List<EncounterPoint> generateEncounterPoints(LocationAPI where) {
321 List<EncounterPoint> result = new ArrayList<EncounterPoint>();
322 if (where == null) return result;
324 List<EncounterPoint> curr = x.generateEncounterPoints(where);
325 if (curr != null) {
326 result.addAll(curr);
327 }
328 }
329 return result;
330 }
331
332 public static void reportCellDisrupted(LuddicPathCellsIntel cell) {
334 x.reportCellsDisrupted(cell);
335 }
336 }
337
338 public static void reportAboutToOpenCoreTab(CoreUITabId tab, Object param) {
340 x.reportAboutToOpenCoreTab(tab, param);
341 }
342 }
343
344
347 x.reportAboutToRefreshCharacterStatEffects();
348 }
349 }
350
353 x.reportRefreshedCharacterStatEffects();
354 }
355 }
356
357 public static void renderInUICoordsBelowUI(ViewportAPI viewport) {
359 x.renderInUICoordsBelowUI(viewport);
360 }
361 }
364 x.renderInUICoordsAboveUIBelowTooltips(viewport);
365 }
366 }
367 public static void renderInUICoordsAboveUIAndTooltips(ViewportAPI viewport) {
369 x.renderInUICoordsAboveUIAndTooltips(viewport);
370 }
371 }
372
373 public static List<IndustryOptionData> getIndustryOptions(Industry ind) {
374 List<IndustryOptionData> result = new ArrayList<IndustryOptionData>();
376 List<IndustryOptionData> curr = x.getIndustryOptions(ind);
377 if (curr != null) {
378 result.addAll(curr);
379 }
380 }
381 return result;
382 }
383
384 public static void addToIndustryTooltip(Industry ind, IndustryTooltipMode mode, TooltipMakerAPI tooltip, float width, boolean expanded) {
385 // don't want to do it this way since a provider might add a one-time option that doesn't stay in the list
386 // but has a lasting effect that needs to be shown in the tooltip
387// List<IndustryOptionData> list = getIndustryOptions(ind);
388// Set<IndustryOptionProvider> providers = new LinkedHashSet<IndustryOptionProvider>();
389// for (IndustryOptionData curr : list) {
390// providers.add(curr.provider);
391// }
392// for (IndustryOptionProvider x : providers) {
393// x.addToIndustryTooltip(mode, tooltip, width, expanded);
394// }
395
397 x.addToIndustryTooltip(ind, mode, tooltip, width, expanded);
398 }
399 }
400
401 public static void reportFleetInflated(CampaignFleetAPI fleet, FleetInflater inflater) {
403 x.reportFleetInflated(fleet, inflater);
404 }
405 }
406
407
410 x.reportNavigationDataSectionAboutToBeCreated(target);
411 }
412// CampaignFleetAPI pf = Global.getSector().getPlayerFleet();
413// MutableStat stat = pf.getStats().getFuelUseHyperMult();
414// stat.modifyMult("test123", 0.1f, "Test");
415 }
416
419 x.reportNavigationDataSectionWasCreated(target);
420 }
421// CampaignFleetAPI pf = Global.getSector().getPlayerFleet();
422// MutableStat stat = pf.getStats().getFuelUseHyperMult();
423// stat.unmodifyMult("test123");
424 }
425
426
427
430 x.reportCommissionEnded(intel);
431 }
432 }
433
434
435 public static void reportColonySizeChanged(MarketAPI market, int prevSize) {
437 x.reportColonySizeChanged(market, prevSize);
438 }
439 }
440
441 public static void reportDetectedEntity(SectorEntityToken entity, VisibilityLevel level) {
443 x.reportDetectedEntity(entity, level);
444 }
445 }
446
447
450 x.finishedAddingCrisisFactors(intel);
451 }
452 }
453
454
455 public static void reportAboutToOpenCodex() {
457 x.reportAboutToOpenCodex();
458 }
459 }
460 public static void reportClosedCodex() {
462 x.reportClosedCodex();
463 }
464 }
465
466 public static void reportFleetMemberVariantSaved(FleetMemberAPI member, MarketAPI dockedAt) {
468 x.reportFleetMemberVariantSaved(member, dockedAt);
469 }
470 }
471
472
473 public static void modifyDataForFleet(FleetAutoresolveData data) {
475 x.modifyDataForFleet(data);
476 }
477 }
478
479}
480
481
482
483
484
485
486
487
488
489
490
491
static SectorAPI getSector()
Definition Global.java:65
static void reportBattleOccurred(CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner, BattleAPI battle)
static void reportAboutToShowLootToPlayer(CargoAPI loot, InteractionDialogAPI dialog)
static void reportRaidObjectivesAchieved(RaidResultData data, InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap)
static void reportPlayerNonMarketTransaction(PlayerMarketTransaction transaction, InteractionDialogAPI dialog)
static void modifyMarineLossesStatPreRaid(MarketAPI market, List< GroundRaidObjectivePlugin > objectives, MutableStat stat)
static void finishedAddingCrisisFactors(HostileActivityEventIntel intel)
static void reportRaidForValuablesFinishedBeforeCargoShown(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, CargoAPI cargo)
static void reportNavigationDataSectionWasCreated(SectorEntityToken target)
static void reportPlayerSurveyedPlanet(PlanetAPI planet)
static List< IndustryOptionData > getIndustryOptions(Industry ind)
static void reportFleetTransitingGate(CampaignFleetAPI fleet, SectorEntityToken gateFrom, SectorEntityToken gateTo)
static void reportSubmarketOpened(SubmarketAPI submarket)
static void reportCellDisrupted(LuddicPathCellsIntel cell)
static void reportCommissionEnded(FactionCommissionIntel intel)
static void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param)
static void reportEntityDiscovered(SectorEntityToken entity)
static void processCampaignInputPreCore(List< InputEventAPI > events)
static List< EncounterPoint > generateEncounterPoints(LocationAPI where)
static void reportDetectedEntity(SectorEntityToken entity, VisibilityLevel level)
static void modifyRaidObjectives(MarketAPI market, SectorEntityToken entity, List< GroundRaidObjectivePlugin > objectives, RaidType type, int marineTokens, int priority)
static void reportShipsRecovered(List< FleetMemberAPI > ships, InteractionDialogAPI dialog)
static void reportObjectiveDestroyed(SectorEntityToken objective, SectorEntityToken stableLocation, FactionAPI enemy)
static void reportSaturationBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
static boolean hasOtherFactors(SectorEntityToken entity)
static void renderInUICoordsAboveUIAndTooltips(ViewportAPI viewport)
static int countOtherFactors(SectorEntityToken entity)
static void reportSpecialCargoGainedFromRecoveredDerelict(CargoAPI loot, InteractionDialogAPI dialog)
static void reportCurrentLocationChanged(LocationAPI prev, LocationAPI curr)
static void renderInUICoordsAboveUIBelowTooltips(ViewportAPI viewport)
static void reportPlayerLeftCargoPods(SectorEntityToken entity)
static void reportPlayerColonizedPlanet(PlanetAPI planet)
static void reportObjectiveChangedHands(SectorEntityToken objective, FactionAPI from, FactionAPI to)
static void updateSlipstreamBlockers(CollisionGridAPI grid, SlipstreamManager manager)
static void reportPlayerOpenedSubmarket(SubmarketAPI submarket, SubmarketInteractionType type)
static void reportRaidToDisruptFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, Industry industry)
static void modifyDataForFleet(FleetAutoresolveData data)
static void updateSlipstreamConfig(String prevConfig, WeightedRandomPicker< String > nextConfigPicker, SlipstreamManager manager)
static void reportColonyDecivilized(MarketAPI market, boolean fullyDestroyed)
static void reportColonySizeChanged(MarketAPI market, int prevSize)
static void reportNavigationDataSectionAboutToBeCreated(SectorEntityToken target)
static void reportFleetMemberVariantSaved(FleetMemberAPI member, MarketAPI dockedAt)
static void reportExtraSalvageShown(SectorEntityToken entity)
static void reportPlayerMarketTransaction(PlayerMarketTransaction transaction)
static void reportPlayerOpenedMarketAndCargoUpdated(MarketAPI market)
static void reportAboutToOpenCoreTab(CoreUITabId tab, Object param)
static void addToIndustryTooltip(Industry ind, IndustryTooltipMode mode, TooltipMakerAPI tooltip, float width, boolean expanded)
static void reportTacticalBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
static void printOtherFactors(TooltipMakerAPI text, SectorEntityToken entity)
static void reportColonyAboutToBeDecivilized(MarketAPI market, boolean fullyDestroyed)
static void renderInUICoordsBelowUI(ViewportAPI viewport)
static void processCampaignInputPreFleetControl(List< InputEventAPI > events)
static void reportFleetInflated(CampaignFleetAPI fleet, FleetInflater inflater)
static void addCommodityTooltipSectionAfterPrice(TooltipMakerAPI info, float width, boolean expanded, CargoStackAPI stack)
static void reportPlayerAbandonedColony(MarketAPI colony)
static void reportSubmarketCargoAndShipsUpdated(SubmarketAPI submarket)
static void processCampaignInputPostCore(List< InputEventAPI > events)
static List< CampaignInputListener > getSortedInputListeners()
ListenerManagerAPI getListenerManager()