Starsector API
Loading...
Searching...
No Matches
BaseSalvageSpecial.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special;
2
3import java.util.Map;
4import java.util.Random;
5
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.InteractionDialogAPI;
10import com.fs.starfarer.api.campaign.OptionPanelAPI;
11import com.fs.starfarer.api.campaign.SectorEntityToken;
12import com.fs.starfarer.api.campaign.TextPanelAPI;
13import com.fs.starfarer.api.campaign.VisualPanelAPI;
14import com.fs.starfarer.api.campaign.rules.MemoryAPI;
15import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
16import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
17import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.SalvageSpecialInteraction.SalvageSpecialPlugin;
18import com.fs.starfarer.api.util.Misc;
19
20public class BaseSalvageSpecial implements SalvageSpecialPlugin {
21
22 public static final String EXTRA_SALVAGE = "$extraSpecialSalvage";
23 public static final String TEMP_EXTRA_SALVAGE = "$tempExtraSpecialSalvage";
24 public static class ExtraSalvage {
25 public CargoAPI cargo;
26 public ExtraSalvage(CargoAPI cargo) {
27 this.cargo = cargo;
28 }
29 }
30
31 protected boolean done = false;
32 protected boolean endWithContinue = true;
33 protected InteractionDialogAPI dialog;
34 protected Random random;
35 protected SectorEntityToken entity;
36
37 protected TextPanelAPI text;
38 protected OptionPanelAPI options;
39 protected VisualPanelAPI visual;
40 protected Map<String, MemoryAPI> memoryMap;
41
42 protected CampaignFleetAPI playerFleet;
43
44 protected void addTempExtraSalvage(CargoAPI cargo) {
45 ExtraSalvage extra = getTempExtraSalvage(memoryMap);
46 if (extra == null) {
47 extra = new ExtraSalvage(cargo);
48 } else {
49 extra.cargo.addAll(cargo);
50 }
51 MemoryAPI memory = BaseCommandPlugin.getEntityMemory(dialog.getPlugin().getMemoryMap());
52 memory.set(TEMP_EXTRA_SALVAGE, extra, 0f);
53 }
54
55 public static void addExtraSalvage(SectorEntityToken entity, CargoAPI cargo) {
56 addExtraSalvage(cargo, entity.getMemoryWithoutUpdate(), -1);
57 }
58 public static void addExtraSalvage(CargoAPI cargo, MemoryAPI memory, float expire) {
59 ExtraSalvage extra = getExtraSalvage(memory);
60 if (extra == null) {
61 extra = new ExtraSalvage(cargo);
62 } else {
63 extra.cargo.addAll(cargo);
64 }
65 memory.set(EXTRA_SALVAGE, extra, expire);
66 }
67
68 public static CargoAPI getCombinedExtraSalvage(Map<String, MemoryAPI> memoryMap) {
69 ExtraSalvage extra = getExtraSalvage(memoryMap);
70 ExtraSalvage temp = getTempExtraSalvage(memoryMap);
71 CargoAPI cargo = Global.getFactory().createCargo(true);
72 if (extra != null && extra.cargo != null) cargo.addAll(extra.cargo);
73 if (temp != null && temp.cargo != null) cargo.addAll(temp.cargo);
74 return cargo;
75 }
76 public static CargoAPI getCombinedExtraSalvage(SectorEntityToken entity) {
77 ExtraSalvage extra = getExtraSalvage(entity);
78 ExtraSalvage temp = getTempExtraSalvage(entity);
79 CargoAPI cargo = Global.getFactory().createCargo(true);
80 if (extra != null && extra.cargo != null) cargo.addAll(extra.cargo);
81 if (temp != null && temp.cargo != null) cargo.addAll(temp.cargo);
82 return cargo;
83 }
84 public static ExtraSalvage getTempExtraSalvage(SectorEntityToken entity) {
85 return getTempExtraSalvage(entity.getMemoryWithoutUpdate());
86 }
87 public static ExtraSalvage getExtraSalvage(SectorEntityToken entity) {
88 return getExtraSalvage(entity.getMemoryWithoutUpdate());
89 }
90 public static ExtraSalvage getExtraSalvage(MemoryAPI memory) {
91 if (memory.contains(EXTRA_SALVAGE)) {
92 return (ExtraSalvage) memory.get(EXTRA_SALVAGE);
93 }
94 return null;
95 }
96 public static ExtraSalvage getTempExtraSalvage(MemoryAPI memory) {
97 if (memory.contains(TEMP_EXTRA_SALVAGE)) {
98 return (ExtraSalvage) memory.get(TEMP_EXTRA_SALVAGE);
99 }
100 return null;
101 }
102 public static ExtraSalvage getTempExtraSalvage(Map<String, MemoryAPI> memoryMap) {
103 MemoryAPI memory = BaseCommandPlugin.getEntityMemory(memoryMap);
104 return getTempExtraSalvage(memory);
105 }
106 public static ExtraSalvage getExtraSalvage(Map<String, MemoryAPI> memoryMap) {
107 MemoryAPI memory = BaseCommandPlugin.getEntityMemory(memoryMap);
108 return getExtraSalvage(memory);
109 }
110 public static void clearExtraSalvage(Map<String, MemoryAPI> memoryMap) {
111 MemoryAPI memory = BaseCommandPlugin.getEntityMemory(memoryMap);
112 clearExtraSalvage(memory);
113 }
114 public static void clearExtraSalvage(MemoryAPI memory) {
115 memory.unset(EXTRA_SALVAGE);
116 memory.unset(TEMP_EXTRA_SALVAGE);
117 }
118 public static void clearExtraSalvage(SectorEntityToken entity) {
119 clearExtraSalvage(entity.getMemoryWithoutUpdate());
120 }
121
122 public void init(InteractionDialogAPI dialog, Object specialData) {
123 this.dialog = dialog;
124
125 playerFleet = Global.getSector().getPlayerFleet();
126
127 text = dialog.getTextPanel();
128 options = dialog.getOptionPanel();
129 visual = dialog.getVisualPanel();
130 memoryMap = dialog.getPlugin().getMemoryMap();
131
132 entity = dialog.getInteractionTarget();
133
134 MemoryAPI memory = BaseCommandPlugin.getEntityMemory(dialog.getPlugin().getMemoryMap());
135 long seed = memory.getLong(MemFlags.SALVAGE_SEED);
136 if (seed == 0) {
137 random = new Random();
138 } else {
139 random = Misc.getRandom(seed, 50);
140 }
141 }
142
143 public void optionSelected(String optionText, Object optionData) {
144
145 }
146
147 public void initNothing() {
148 setDone(true);
149 setEndWithContinue(false);
150 setShowAgain(false);
151 }
152
153 public boolean isDone() {
154 return done;
155 }
156
157 public void setDone(boolean done) {
158 this.done = done;
159 }
160
161 public boolean endWithContinue() {
162 return endWithContinue;
163 }
164
165 public void setEndWithContinue(boolean endWithContinue) {
166 this.endWithContinue = endWithContinue;
167 }
168
169 public String getString(String format) {
170 return Misc.getStringWithTokenReplacement(format, entity, memoryMap);
171 }
172
173 public void addText(String format) {
174 text.addParagraph(getString(format));
175 }
176
177 private boolean showAgain = false;
178 public boolean shouldShowAgain() {
179 return showAgain;
180 }
181
182 public void setShowAgain(boolean showAgain) {
183 this.showAgain = showAgain;
184 }
185
186 private boolean shouldAbortSalvageAndRemoveEntity;
188 return shouldAbortSalvageAndRemoveEntity;
189 }
190
191 public void setShouldAbortSalvageAndRemoveEntity(boolean shouldAbortSalvageAndRemoveEntity) {
192 this.shouldAbortSalvageAndRemoveEntity = shouldAbortSalvageAndRemoveEntity;
193 }
194
195
196}
197
198
199
static FactoryAPI getFactory()
Definition Global.java:35
static SectorAPI getSector()
Definition Global.java:59
static MemoryAPI getEntityMemory(Map< String, MemoryAPI > memoryMap)
static ExtraSalvage getTempExtraSalvage(Map< String, MemoryAPI > memoryMap)
static void addExtraSalvage(SectorEntityToken entity, CargoAPI cargo)
static CargoAPI getCombinedExtraSalvage(Map< String, MemoryAPI > memoryMap)
static void addExtraSalvage(CargoAPI cargo, MemoryAPI memory, float expire)
static ExtraSalvage getExtraSalvage(Map< String, MemoryAPI > memoryMap)
void setShouldAbortSalvageAndRemoveEntity(boolean shouldAbortSalvageAndRemoveEntity)
CargoAPI createCargo(boolean unlimitedStacks)