25 public static interface SalvageSpecialData {
26 SalvageSpecialPlugin createSpecialPlugin();
30 public static interface SalvageSpecialPlugin {
31 void init(InteractionDialogAPI dialog, Object specialData);
32 void optionSelected(String optionText, Object optionData);
34 boolean endWithContinue();
35 boolean shouldShowAgain();
36 boolean shouldAbortSalvageAndRemoveEntity();
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;
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;
54 public void init(InteractionDialogAPI dialog) {
57 special.init(dialog, specialData);
58 if (special.isDone()) {
59 endSpecial(special.endWithContinue(), special.shouldAbortSalvageAndRemoveEntity());
66 public void optionSelected(String optionText, Object optionData) {
67 if (optionText !=
null) {
79 special.optionSelected(optionText, optionData);
80 if (special.isDone()) {
81 endSpecial(special.endWithContinue(), special.shouldAbortSalvageAndRemoveEntity());
89 public void endSpecial(
boolean withContinue,
boolean withAbort) {
90 if (!special.shouldShowAgain()) {
95 dialog.setPlugin(originalPlugin);
97 Misc.fadeAndExpire(dialog.getInteractionTarget(), 1f);
101 FireBest.
fire(
null, dialog, memoryMap,
"SalvageSpecialFinished");
103 FireBest.
fire(
null, dialog, memoryMap,
"SalvageSpecialFinishedNoContinue");
108 public void advance(
float amount) {
110 public void backFromEngagement(EngagementResultAPI battleResult) {
112 public Object getContext() {
115 public Map<String, MemoryAPI> getMemoryMap() {
118 public void optionMousedOver(String optionText, Object optionData) {
123 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params,
final Map<String, MemoryAPI> memoryMap) {
124 if (dialog ==
null)
return false;
126 SectorEntityToken entity = dialog.getInteractionTarget();
136 final InteractionDialogPlugin originalPlugin = dialog.getPlugin();
139 Object specialData = memory.get(MemFlags.SALVAGE_SPECIAL_DATA);
146 SalvageSpecialPlugin special =
null;
147 if (specialData instanceof SalvageSpecialData) {
148 special = ((SalvageSpecialData) specialData).createSpecialPlugin();
151 if (special ==
null) {
152 FireBest.
fire(
null, dialog, memoryMap,
"SalvageSpecialFinishedNoContinue");
163 SalvageSpecialDialogPlugin plugin =
new SalvageSpecialDialogPlugin(originalPlugin, special, specialData, memoryMap);
164 dialog.setPlugin(plugin);