1package com.fs.starfarer.api.campaign.listeners;
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Comparator;
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.econ.Industry;
24import com.fs.starfarer.api.campaign.econ.Industry.IndustryTooltipMode;
25import com.fs.starfarer.api.campaign.econ.MarketAPI;
26import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
27import com.fs.starfarer.api.campaign.listeners.GroundRaidObjectivesListener.RaidResultData;
28import com.fs.starfarer.api.campaign.listeners.IndustryOptionProvider.IndustryOptionData;
29import com.fs.starfarer.api.campaign.listeners.SubmarketInteractionListener.SubmarketInteractionType;
30import com.fs.starfarer.api.campaign.rules.MemoryAPI;
31import com.fs.starfarer.api.combat.CollisionGridAPI;
32import com.fs.starfarer.api.combat.MutableStat;
33import com.fs.starfarer.api.combat.ViewportAPI;
34import com.fs.starfarer.api.fleet.FleetMemberAPI;
35import com.fs.starfarer.api.impl.campaign.enc.EncounterPoint;
36import com.fs.starfarer.api.impl.campaign.enc.EncounterPointProvider;
37import com.fs.starfarer.api.impl.campaign.graid.GroundRaidObjectivePlugin;
38import com.fs.starfarer.api.impl.campaign.intel.FactionCommissionIntel;
39import com.fs.starfarer.api.impl.campaign.intel.bases.LuddicPathCellsIntel;
40import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidType;
41import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.TempData;
42import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamManager;
43import com.fs.starfarer.api.input.InputEventAPI;
44import com.fs.starfarer.api.ui.TooltipMakerAPI;
45import com.fs.starfarer.api.util.WeightedRandomPicker;
51 Collections.sort(list,
new Comparator<CampaignInputListener>() {
60 x.processCampaignInputPreCore(events);
65 x.processCampaignInputPostCore(events);
70 x.processCampaignInputPreFleetControl(events);
76 x.reportPlayerSurveyedPlanet(planet);
82 x.reportPlayerColonizedPlanet(planet);
88 x.reportPlayerAbandonedColony(colony);
94 x.reportAboutToShowLootToPlayer(loot, dialog);
100 x.reportSpecialCargoGainedFromRecoveredDerelict(loot, dialog);
107 x.reportFleetDespawnedToListener(fleet, reason, param);
113 x.reportBattleOccurred(fleet, primaryWinner, battle);
119 x.reportEconomyTick(iterIndex);
124 x.reportEconomyMonthEnd();
130 x.reportEntityDiscovered(entity);
137 x.reportObjectiveChangedHands(objective, from, to);
142 x.reportObjectiveDestroyed(objective, stableLocation, enemy);
148 x.reportRaidForValuablesFinishedBeforeCargoShown(dialog, market, actionData, cargo);
153 x.reportRaidToDisruptFinished(dialog, market, actionData, industry);
159 x.reportTacticalBombardmentFinished(dialog, market, actionData);
165 x.reportSaturationBombardmentFinished(dialog, market, actionData);
171 x.reportExtraSalvageShown(entity);
177 x.reportPlayerOpenedSubmarket(submarket, type);
183 x.reportPlayerOpenedMarket(market);
189 x.reportPlayerClosedMarket(market);
195 x.reportPlayerOpenedMarketAndCargoUpdated(market);
201 x.reportPlayerMarketTransaction(transaction);
207 x.modifyRaidObjectives(market, entity, objectives, type, marineTokens, priority);
213 x.reportRaidObjectivesAchieved(data, dialog, memoryMap);
219 x.addSectionAfterPrice(info, width, expanded, stack);
225 x.reportCargoScreenOpened();
231 x.reportSubmarketCargoAndShipsUpdated(submarket);
237 x.reportPlayerLeftCargoPods(entity);
243 x.reportPlayerNonMarketTransaction(transaction, dialog);
249 x.reportSubmarketOpened(submarket);
255 x.printOtherFactors(text, entity);
261 x.modifyMarineLossesStatPreRaid(market, objectives, stat);
267 x.reportFleetTransitingGate(fleet, gateFrom, gateTo);
273 x.reportShipsRecovered(ships, dialog);
279 x.reportCurrentLocationChanged(prev, curr);
285 x.reportColonyAboutToBeDecivilized(market, fullyDestroyed);
290 x.reportColonyDecivilized(market, fullyDestroyed);
296 x.updateSlipstreamBlockers(grid, manager);
300 SlipstreamManager manager) {
302 x.updateSlipstreamConfig(prevConfig, nextConfigPicker, manager);
309 if (x.isActiveFactorFor(entity)) count++;
318 List<EncounterPoint> result =
new ArrayList<EncounterPoint>();
319 if (where ==
null)
return result;
320 for (EncounterPointProvider x :
Global.
getSector().getListenerManager().getListeners(EncounterPointProvider.class)) {
321 List<EncounterPoint> curr = x.generateEncounterPoints(where);
331 x.reportCellsDisrupted(cell);
337 x.reportAboutToOpenCoreTab(tab, param);
344 x.reportAboutToRefreshCharacterStatEffects();
350 x.reportRefreshedCharacterStatEffects();
356 x.renderInUICoordsBelowUI(viewport);
361 x.renderInUICoordsAboveUIBelowTooltips(viewport);
366 x.renderInUICoordsAboveUIAndTooltips(viewport);
371 List<IndustryOptionData> result =
new ArrayList<IndustryOptionData>();
373 List<IndustryOptionData> curr = x.getIndustryOptions(ind);
381 public static void addToIndustryTooltip(Industry ind, IndustryTooltipMode mode, TooltipMakerAPI tooltip,
float width,
boolean expanded) {
394 x.addToIndustryTooltip(ind, mode, tooltip, width, expanded);
400 x.reportFleetInflated(fleet, inflater);
407 x.reportNavigationDataSectionAboutToBeCreated(target);
416 x.reportNavigationDataSectionWasCreated(target);
427 x.reportCommissionEnded(intel);
434 x.reportColonySizeChanged(market, prevSize);
static SectorAPI getSector()
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 reportEconomyMonthEnd()
static void modifyMarineLossesStatPreRaid(MarketAPI market, List< GroundRaidObjectivePlugin > objectives, MutableStat stat)
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 reportAboutToRefreshCharacterStatEffects()
static void modifyRaidObjectives(MarketAPI market, SectorEntityToken entity, List< GroundRaidObjectivePlugin > objectives, RaidType type, int marineTokens, int priority)
static void reportPlayerClosedMarket(MarketAPI market)
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 reportRefreshedCharacterStatEffects()
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 reportEconomyTick(int iterIndex)
static void reportCargoScreenOpened()
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 reportPlayerOpenedMarket(MarketAPI market)
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()