Starsector API
Loading...
Searching...
No Matches
SalvageSpecialInteraction.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
2
3import java.util.List;
4import java.util.Map;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.InteractionDialogAPI;
8import com.fs.starfarer.api.campaign.InteractionDialogPlugin;
9import com.fs.starfarer.api.campaign.SectorEntityToken;
10import com.fs.starfarer.api.campaign.rules.MemoryAPI;
11import com.fs.starfarer.api.combat.EngagementResultAPI;
12import com.fs.starfarer.api.impl.campaign.DevMenuOptions;
13import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
14import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
15import com.fs.starfarer.api.impl.campaign.rulecmd.DumpMemory;
16import com.fs.starfarer.api.impl.campaign.rulecmd.FireBest;
17import com.fs.starfarer.api.util.Misc;
18import com.fs.starfarer.api.util.Misc.Token;
19
24
25 public static interface SalvageSpecialData {
26 SalvageSpecialPlugin createSpecialPlugin();
27 }
28
29
30 public static interface SalvageSpecialPlugin {
31 void init(InteractionDialogAPI dialog, Object specialData);
32 void optionSelected(String optionText, Object optionData);
33 boolean isDone();
34 boolean endWithContinue();
35 boolean shouldShowAgain();
36 boolean shouldAbortSalvageAndRemoveEntity();
37 }
38
39
40 public static class SalvageSpecialDialogPlugin implements InteractionDialogPlugin {
41 private InteractionDialogAPI dialog;
42 private InteractionDialogPlugin originalPlugin;
43 private Map<String, MemoryAPI> memoryMap;
44 private final SalvageSpecialPlugin special;
45 private final Object specialData;
46
47 public SalvageSpecialDialogPlugin(InteractionDialogPlugin originalPlugin, SalvageSpecialPlugin special, Object specialData, Map<String, MemoryAPI> memoryMap) {
48 this.originalPlugin = originalPlugin;
49 this.special = special;
50 this.specialData = specialData;
51 this.memoryMap = memoryMap;
52 }
53
54 public void init(InteractionDialogAPI dialog) {
55 this.dialog = dialog;
56
57 special.init(dialog, specialData);
58 if (special.isDone()) {
59 endSpecial(special.endWithContinue(), special.shouldAbortSalvageAndRemoveEntity());
60 } else {
63 }
64 }
65 }
66 public void optionSelected(String optionText, Object optionData) {
67 if (optionText != null) {
68 dialog.getTextPanel().addParagraph(optionText, Global.getSettings().getColor("buttonText"));
69 }
70 if (optionData == DumpMemory.OPTION_ID) {
71 new DumpMemory().execute(null, dialog, null, getMemoryMap());
72 return;
73 } else if (DevMenuOptions.isDevOption(optionData)) {
74 DevMenuOptions.execute(dialog, (String) optionData);
75 return;
76 }
77
78
79 special.optionSelected(optionText, optionData);
80 if (special.isDone()) {
81 endSpecial(special.endWithContinue(), special.shouldAbortSalvageAndRemoveEntity());
82 } else {
85 }
86 }
87 }
88
89 public void endSpecial(boolean withContinue, boolean withAbort) {
90 if (!special.shouldShowAgain()) {
91 BaseCommandPlugin.getEntityMemory(memoryMap).unset(MemFlags.SALVAGE_SPECIAL_DATA);
92 }
93
94
95 dialog.setPlugin(originalPlugin);
96 if (withAbort) {
97 Misc.fadeAndExpire(dialog.getInteractionTarget(), 1f);
98 dialog.dismiss();
99 } else {
100 if (withContinue) {
101 FireBest.fire(null, dialog, memoryMap, "SalvageSpecialFinished");
102 } else {
103 FireBest.fire(null, dialog, memoryMap, "SalvageSpecialFinishedNoContinue");
104 }
105 }
106 }
107
108 public void advance(float amount) {
109 }
110 public void backFromEngagement(EngagementResultAPI battleResult) {
111 }
112 public Object getContext() {
113 return null;
114 }
115 public Map<String, MemoryAPI> getMemoryMap() {
116 return memoryMap;
117 }
118 public void optionMousedOver(String optionText, Object optionData) {
119 }
120 }
121
122
123 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, final Map<String, MemoryAPI> memoryMap) {
124 if (dialog == null) return false;
125
126 SectorEntityToken entity = dialog.getInteractionTarget();
127 //SalvageEntityGenDataSpec spec = SalvageEntityGeneratorOld.getSalvageSpec(entity.getCustomEntityType());
128
129 MemoryAPI memory = getEntityMemory(memoryMap);
130// long seed = memory.getLong(MemFlags.MEMORY_KEY_SALVAGE_SEED);
131// Random random = Misc.getRandom(seed, 50);
132
133 //dialog.getTextPanel().addParagraph("Test special interactions");
134
135
136 final InteractionDialogPlugin originalPlugin = dialog.getPlugin();
137
138
139 Object specialData = memory.get(MemFlags.SALVAGE_SPECIAL_DATA);
140
141// Class specialClass = dataToSpecialPlugin.get(specialData.getClass());
142// if (specialClass == null) {
143// FireBest.fire(null, dialog, memoryMap, "SalvageSpecialFinishedNoContinue");
144// return true;
145// }
146 SalvageSpecialPlugin special = null;
147 if (specialData instanceof SalvageSpecialData) {
148 special = ((SalvageSpecialData) specialData).createSpecialPlugin();
149 }
150
151 if (special == null) {
152 FireBest.fire(null, dialog, memoryMap, "SalvageSpecialFinishedNoContinue");
153 return true;
154 }
155
156
157 //SalvageSpecialPlugin special = new BaseSalvageSpecial();
158 //SalvageSpecialPlugin special = new DomainSurveyDerelictSpecial();
159 //try {
160 //SalvageSpecialPlugin special = (SalvageSpecialPlugin) specialClass.newInstance();
161
162 //SalvageSpecialDialogPlugin plugin = new SalvageSpecialDialogPlugin(originalPlugin, special, specialData, memoryMap);
163 SalvageSpecialDialogPlugin plugin = new SalvageSpecialDialogPlugin(originalPlugin, special, specialData, memoryMap);
164 dialog.setPlugin(plugin);
165 plugin.init(dialog);
166// } catch (IllegalAccessException e) {
167// throw new RuntimeException(e);
168// } catch (InstantiationException e) {
169// throw new RuntimeException(e);
170// }
171
172 return true;
173 }
174
175
176
177
178
179
180
181
182
183
184
185}
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
static SettingsAPI getSettings()
Definition Global.java:51
static void execute(InteractionDialogAPI dialog, String option)
static boolean isDevOption(Object optionData)
static void addOptions(InteractionDialogAPI dialog)
static MemoryAPI getEntityMemory(Map< String, MemoryAPI > memoryMap)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static boolean fire(String ruleId, InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap, String params)
Definition FireBest.java:56
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, final Map< String, MemoryAPI > memoryMap)