1package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.CargoAPI;
9import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
10import com.fs.starfarer.api.campaign.CargoPickerListener;
11import com.fs.starfarer.api.campaign.CargoStackAPI;
12import com.fs.starfarer.api.campaign.CoreInteractionListener;
13import com.fs.starfarer.api.campaign.CustomCampaignEntityPlugin;
14import com.fs.starfarer.api.campaign.CustomEntitySpecAPI;
15import com.fs.starfarer.api.campaign.FactionAPI;
16import com.fs.starfarer.api.campaign.InteractionDialogAPI;
17import com.fs.starfarer.api.campaign.JumpPointAPI;
18import com.fs.starfarer.api.campaign.LocationAPI;
19import com.fs.starfarer.api.campaign.OptionPanelAPI;
20import com.fs.starfarer.api.campaign.RuleBasedDialog;
21import com.fs.starfarer.api.campaign.SectorEntityToken;
22import com.fs.starfarer.api.campaign.TextPanelAPI;
23import com.fs.starfarer.api.campaign.econ.MarketAPI;
24import com.fs.starfarer.api.campaign.listeners.ListenerUtil;
25import com.fs.starfarer.api.campaign.rules.MemoryAPI;
26import com.fs.starfarer.api.impl.campaign.CampaignObjective;
27import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActionEnvelope;
28import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepActions;
29import com.fs.starfarer.api.impl.campaign.DebugFlags;
30import com.fs.starfarer.api.impl.campaign.ids.Commodities;
31import com.fs.starfarer.api.impl.campaign.ids.Entities;
32import com.fs.starfarer.api.impl.campaign.ids.Factions;
33import com.fs.starfarer.api.impl.campaign.ids.Items;
34import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
35import com.fs.starfarer.api.impl.campaign.ids.Tags;
36import com.fs.starfarer.api.impl.campaign.intel.events.ht.HTNeutrinoBurstFactor;
37import com.fs.starfarer.api.impl.campaign.intel.events.ht.HTPoints;
38import com.fs.starfarer.api.impl.campaign.intel.events.ht.HyperspaceTopographyEventIntel;
39import com.fs.starfarer.api.impl.campaign.intel.misc.CommSnifferIntel;
40import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
41import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
42import com.fs.starfarer.api.impl.campaign.rulecmd.FireBest;
43import com.fs.starfarer.api.impl.campaign.shared.WormholeManager;
44import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamVisibilityManager;
45import com.fs.starfarer.api.loading.Description;
46import com.fs.starfarer.api.loading.Description.Type;
47import com.fs.starfarer.api.ui.LabelAPI;
48import com.fs.starfarer.api.ui.TooltipMakerAPI;
49import com.fs.starfarer.api.util.Misc;
50import com.fs.starfarer.api.util.Misc.Token;
116 String command = params.get(0).getString(
memoryMap);
117 if (command ==
null)
return false;
127 if (command.equals(
"printCost")) {
128 String type = params.get(1).getString(
memoryMap);
130 }
else if (command.equals(
"showSalvage")) {
132 }
else if (command.equals(
"selectWormholeAnchor")) {
134 }
else if (command.equals(
"hasWormholeAnchor")) {
136 }
else if (command.equals(
"hasRepImpact")) {
138 }
else if (command.equals(
"showRepairCost")) {
140 }
else if (command.equals(
"showBurstCost")) {
143 }
else if (command.equals(
"showRepairCostNoPrompt")) {
145 }
else if (command.equals(
"printHackDesc")) {
147 }
else if (command.equals(
"canBuild")) {
148 String type = params.get(1).getString(
memoryMap);
150 }
else if (command.equals(
"canActivate")) {
152 }
else if (command.equals(
"canBurst")) {
154 }
else if (command.equals(
"build")) {
155 String type = params.get(1).getString(
memoryMap);
157 }
else if (command.equals(
"printDescription")) {
161 }
else if (command.equals(
"isHacked")) {
163 }
else if (command.equals(
"doAction")) {
164 String action = params.get(1).getString(
memoryMap);
165 if (action.equals(
"hack")) {
167 }
else if (action.equals(
"reset")) {
169 }
else if (action.equals(
"unhack")) {
171 }
else if (action.equals(
"control")) {
173 }
else if (action.equals(
"salvage")) {
175 }
else if (action.equals(
"burst")) {
186 for (
int i = 0; i < res.length; i++) {
187 String commodityId = res[i];
188 int quantity = quantities[i];
205 if (!hasRecent && points > 0) {
217 !curr.getFaction().isPlayerFaction()) {
230 for (
int i = 0; i < r.length; i++) {
235 public void coreUIDismissed() {
258 RepActions action = RepActions.COMBAT_AGGRESSIVE;
260 action = RepActions.COMBAT_AGGRESSIVE_TOFF;
276 if (loc ==
null)
return;
278 if (other == prev)
continue;
279 if (other.getOrbit() ==
null)
continue;
280 if (other.getOrbitFocus() == prev) {
281 other.setOrbitFocus(built);
297 RepActions action = RepActions.COMBAT_AGGRESSIVE;
300 new RepActionEnvelope(action,
null,
null,
text,
false,
true),
370 public void build(String type, String factionId) {
411 for (
int i = 0; i < res.length; i++) {
412 String commodityId = res[i];
413 int quantity = quantities[i];
414 if (quantity > cargo.
getQuantity(CargoItemType.RESOURCES, commodityId)) {
429 for (
int i = 0; i < res.length; i++) {
430 String commodityId = res[i];
431 int quantity = quantities[i];
444 for (
int i = 0; i < res.length; i++) {
445 String commodityId = res[i];
446 int quantity = quantities[i];
460 for (
int i = 0; i < res.length; i++) {
461 String commodityId = res[i];
462 int quantity = quantities[i];
463 if (quantity > cargo.
getQuantity(CargoItemType.RESOURCES, commodityId)) {
478 for (
int i = 0; i < res.length; i++) {
479 String commodityId = res[i];
480 int quantity = quantities[i];
481 if (quantity > cargo.
getQuantity(CargoItemType.RESOURCES, commodityId)) {
503 for (String tag : spec.
getTags()) {
506 plugin.
init(temp,
null);
529 if (curr.getFaction() ==
null || !curr.getFaction().isPlayerFaction() ||
530 curr.getCustomEntitySpec() ==
null) {
537 if (c == o.getClass()) {
539 text.
addPara(
"Another one in this star system would have no effect " +
540 "beyond providing redundancy in case this one is lost.");
543 curr.getCustomEntitySpec().getAOrAn() +
" " +
544 curr.getCustomEntitySpec().getNameInText() +
" under your control " +
545 "in this star system. Another one would have no effect " +
546 "beyond providing redundancy if one is lost.");
597 LabelAPI label =
text.
addPara(
"You've recently acquired topographic data within %s light-years of your current location,"
598 +
" and a neutrino burst here "
599 +
"will not meaningfully contribute to your understanding of "
600 +
"hyperspace topology. It will, however, still "
605 "will not meaningfully contribute",
"hyperspace topology");
631 text.
addPara(
"You do not have the necessary resources to build this structure.");
653 int [] result =
new int [q.length];
655 for (
int i = 0; i < result.length; i++) {
662 return new int[] {15, 30, 5};
664 return new int[] {50, 200, 20, 20};
668 return new String[] {Commodities.HEAVY_MACHINERY };
673 return new int[] {5};
691 if (stack.isSpecialStack() &&
Items.
WORMHOLE_ANCHOR.equals(stack.getSpecialDataIfSpecial().getId())) {
702 final float width = 310f;
705 public void pickedCargo(
CargoAPI cargo) {
707 cancelledCargoSelection();
713 if (stack.isSpecialStack()) {
730 public void cancelledCargoSelection() {
733 panel.
addPara(
"Deploying and activating a wormhole anchor, turning it into an active terminus, "
734 +
"will consume %s fuel. Your fleet is carrying %s fuel.",
741 panel.
addPara(
"Once the operation is completed, the wormhole will take about half a cycle to stablize,"
744 panel.
addPara(
"Usually, the wormhole will take about a cycle to stablize, but you have "
745 +
"calibration data that will allow it to be used immediately.", 10f);
static SettingsAPI getSettings()
static SoundPlayerAPI getSoundPlayer()
static FactoryAPI getFactory()
static SectorAPI getSector()
static void reportObjectiveDestroyed(SectorEntityToken objective, SectorEntityToken stableLocation, FactionAPI enemy)
static void reportObjectiveChangedHands(SectorEntityToken objective, FactionAPI from, FactionAPI to)
static boolean OBJECTIVES_DEBUG
static final String HEAVY_MACHINERY
static final String VOLATILES
static final String METALS
static final String RARE_METALS
static final String STABLE_LOCATION
static final String NEUTRAL
static final String PLAYER
static final String WORMHOLE_ANCHOR
static final String OBJECTIVE_NON_FUNCTIONAL
static final String FLEET_NOT_CHASING_GHOST
static final String RECENTLY_SALVAGED
static int NEUTRINO_BURST_MAKESHIFT
static int NEUTRINO_BURST_DOMAIN
static int NEUTRINO_BURST_VOLATILES_COST
static boolean hasRecentReadingsNearPlayer()
static float RECENT_READINGS_RANGE_LY
static void addFactorCreateIfNecessary(EventFactor factor, InteractionDialogAPI dialog)
void addRecentReadings(Vector2f loc)
static HyperspaceTopographyEventIntel get()
static CommSnifferIntel getExistingSnifferIntelForRelay(SectorEntityToken relay)
static void addCommodityLossText(String commodityId, int quantity, TextPanelAPI text)
static MemoryAPI getEntityMemory(Map< String, MemoryAPI > memoryMap)
static boolean fire(String ruleId, InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap, String params)
static void addWormholeIntelIfNeeded(SectorEntityToken entity, TextPanelAPI textPanel, boolean deployed)
CampaignFleetAPI playerFleet
void salvage(final String factionId)
void removeRepairCosts(TextPanelAPI text)
Objectives(SectorEntityToken entity)
static float BURST_RANGE_MAKESHIFT
void build(String type, String factionId)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
boolean canBuild(String type)
CargoAPI getWormholeAnchors()
void printCost(String type)
int[] getBurstQuantities()
static float BURST_RANGE_SCAVENGER_MAX
void updateOrbitingEntities(LocationAPI loc, SectorEntityToken prev, SectorEntityToken built)
void selectWormholeAnchor()
Map< String, MemoryAPI > memoryMap
void printDescription(String type)
void init(SectorEntityToken entity)
static float BURST_RANGE_DOMAIN
void printBurstCost(boolean withPrompt)
static String BURST_RANGE
int[] getRepairQuantities()
int[] getSalvageQuantities()
void printRepairCost(boolean withPrompt)
String[] getBurstResources()
String[] getWormholeResources()
void control(String factionId)
String[] getRepairResources()
static float BURST_RANGE_SCAVENGER_MIN
boolean hasWormholeAnchor()
static String WORMHOLE_TYPE_STR
boolean isNonFunctional()
boolean canActivate(String type)
int[] getWormholeQuantities()
InteractionDialogAPI dialog
static float SALVAGE_FRACTION
JumpPointAPI addWormhole(SpecialItemData item, SectorEntityToken stableLocation, InteractionDialogAPI dialog)
static WormholeManager get()
static boolean willWormholeBecomeUnstable(SectorEntityToken stableLocation)
static void updateSlipstreamVisibility(Vector2f extraPoint, float extraRangeLY)
static Color getNegativeHighlightColor()
static Color getHighlightColor()
static void showCost(TextPanelAPI text, Color color, Color dark, String[] res, int[] quantities)
static boolean isPlayerFactionSetUp()
CargoAPI createCargo(boolean unlimitedStacks)
Description getDescription(String id, Type type)
CustomEntitySpecAPI getCustomEntitySpec(String id)
SoundAPI playUISound(String id, float pitch, float volume)
float getQuantity(CargoAPI.CargoItemType type, Object data)
void addFromStack(CargoStackAPI stack)
void removeCommodity(String id, float quantity)
List< CargoStackAPI > getStacksCopy()
void addCommodity(String commodityId, float quantity)
void init(SectorEntityToken entity, Object params)
CustomCampaignEntityPlugin getPlugin()
String getPersonNamePrefix()
boolean isNeutralFaction()
boolean isPlayerFaction()
TextPanelAPI getTextPanel()
VisualPanelAPI getVisualPanel()
InteractionDialogPlugin getPlugin()
SectorEntityToken getInteractionTarget()
void showCargoPickerDialog(String title, String okText, String cancelText, boolean small, float textPanelWidth, CargoAPI cargo, CargoPickerListener listener)
void setPromptText(String promptText)
OptionPanelAPI getOptionPanel()
List< SectorEntityToken > getAllEntities()
List< SectorEntityToken > getEntitiesWithTag(String tag)
SectorEntityToken createToken(float x, float y)
CustomCampaignEntityAPI addCustomEntity(String id, String name, String type, String factionId)
void removeEntity(SectorEntityToken entity)
CampaignFleetAPI getPlayerFleet()
ReputationAdjustmentResult adjustPlayerReputation(Object action, String factionId)
FactionAPI getPlayerFaction()
FactionAPI getFaction(String factionId)
LocationAPI getContainingLocation()
CustomCampaignEntityPlugin getCustomPlugin()
String getCustomEntityType()
void setFaction(String factionId)
void setLocation(float x, float y)
void setOrbit(OrbitAPI orbit)
boolean hasTag(String tag)
Vector2f getLocationInHyperspace()
MemoryAPI getMemoryWithoutUpdate()
CustomEntitySpecAPI getCustomEntitySpec()
LabelAPI addPara(String text)
LabelAPI addParagraph(String text)
TooltipMakerAPI beginTooltip()
void showLoot(String title, CargoAPI otherCargo, boolean generatePods, CoreInteractionListener listener)
List< MarketAPI > getMarkets(LocationAPI loc)
float getFloat(String key)
void set(String key, Object value)
boolean getBoolean(String key)
void setReset(boolean reset)
void setHacked(boolean hacked)
void printNonFunctionalAndHackDescription(TextPanelAPI text)
void printEffect(TooltipMakerAPI text, float pad)
void setHighlight(int start, int end)
void setHighlightColors(Color ... colors)