Starsector API
Loading...
Searching...
No Matches
NewGameDialogPluginImpl.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign;
2
3import java.util.HashMap;
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.OptionPanelAPI;
10import com.fs.starfarer.api.campaign.SectorEntityToken;
11import com.fs.starfarer.api.campaign.TextPanelAPI;
12import com.fs.starfarer.api.campaign.VisualPanelAPI;
13import com.fs.starfarer.api.campaign.rules.MemKeys;
14import com.fs.starfarer.api.campaign.rules.MemoryAPI;
15import com.fs.starfarer.api.characters.CharacterCreationData;
16import com.fs.starfarer.api.combat.EngagementResultAPI;
17import com.fs.starfarer.api.impl.campaign.rulecmd.DumpMemory;
18import com.fs.starfarer.api.impl.campaign.rulecmd.FireAll;
19import com.fs.starfarer.api.impl.campaign.rulecmd.FireBest;
20
21public class NewGameDialogPluginImpl implements InteractionDialogPlugin {
22
23 private static enum OptionId {
24 INIT,
25 CONTINUE_CHOICES,
26 LEAVE,
27 }
28
29 private static enum State {
30 OPTIONS,
31 CHOICES,
32 }
33
34 private InteractionDialogAPI dialog;
35 private TextPanelAPI textPanel;
36 private OptionPanelAPI options;
37 private VisualPanelAPI visual;
38
39 private CharacterCreationData data;
40 private SectorEntityToken entity;
41
42 private State state = State.OPTIONS;
43 private HashMap<String, MemoryAPI> memoryMap;
44 private MemoryAPI memory;
45
46 public void init(InteractionDialogAPI dialog) {
47 this.dialog = dialog;
48 textPanel = dialog.getTextPanel();
49 options = dialog.getOptionPanel();
50 visual = dialog.getVisualPanel();
51
52 dialog.setOptionOnEscape("Leave", OptionId.LEAVE);
53 createInitialOptions();
54
55 entity = dialog.getInteractionTarget();
56 memory = entity.getMemoryWithoutUpdate();
57 data = (CharacterCreationData) memory.get("$characterData");
58 memoryMap = new HashMap<String, MemoryAPI>();
59 memoryMap.put(MemKeys.LOCAL, memory);
60 memoryMap.put(MemKeys.GLOBAL, Global.getFactory().createMemory());
62 memoryMap.get(MemKeys.GLOBAL).set("$isDevMode", true, 0);
63 }
64
65 //dialog.setPromptText("------------------------------");
66 dialog.setPromptText("-");
67
68 dialog.hideTextPanel();
69 visual.showNewGameOptionsPanel(data);
70 //optionSelected(null, OptionId.INIT);
71 }
72
73 public void advance(float amount) {
74 if (state == State.OPTIONS) {
75 String name = data.getCharacterData().getName();
76 if (name == null || name.isEmpty()) {
77 options.setEnabled(OptionId.CONTINUE_CHOICES, false);
78 } else {
79 options.setEnabled(OptionId.CONTINUE_CHOICES, true);
80 }
81 } else if (state == State.CHOICES) {
82 if (data.isDone()) {
83 dialog.dismiss();
84 }
85 }
86 }
87
88 public Map<String, MemoryAPI> getMemoryMap() {
89 return memoryMap;
90 }
91
92 public void backFromEngagement(EngagementResultAPI result) {
93 // no combat here, so this won't get called
94 }
95
96 public void optionSelected(String text, Object optionData) {
97 if (optionData == null) return;
98
99 if (text != null && state == State.CHOICES) {
100 //textPanel.addParagraph(text, Global.getSettings().getColor("buttonText"));
101 dialog.addOptionSelectedText(optionData);
102 }
103
104 if (optionData instanceof String) {
105 if (optionData == DumpMemory.OPTION_ID) {
106 new DumpMemory().execute(null, dialog, null, memoryMap);
107 return;
108 } else if (DevMenuOptions.isDevOption(optionData)) {
109 DevMenuOptions.execute(dialog, (String) optionData);
110 return;
111 }
112
113 memory.set("$option", optionData);
114 memory.expire("$option", 0);
115 fireBest("NewGameOptionSelected");
116 } else {
117 OptionId option = (OptionId) optionData;
118 switch (option) {
119 case LEAVE:
120 dialog.dismissAsCancel();
121 break;
122 case CONTINUE_CHOICES:
123 dialog.showTextPanel();
124 visual.showPersonInfo(data.getPerson(), true);
125 options.clearOptions();
126 state = State.CHOICES;
127 fireBest("BeginNewGameCreation");
128 break;
129 }
130 }
131 }
132
133 private void createInitialOptions() {
134 options.clearOptions();
135 boolean dev = Global.getSettings().isDevMode();
136 options.addOption("Continue", OptionId.CONTINUE_CHOICES, null);
137 //options.addOption("Leave", OptionId.LEAVE, null);
138 }
139
140 private OptionId lastOptionMousedOver = null;
141 public void optionMousedOver(String optionText, Object optionData) {
142
143 }
144
145 public Object getContext() {
146 return null;
147 }
148
149 public boolean fireAll(String trigger) {
150 return FireAll.fire(null, dialog, memoryMap, trigger);
151 }
152
153 public boolean fireBest(String trigger) {
154 return FireBest.fire(null, dialog, memoryMap, trigger);
155 }
156}
157
158
159
static SettingsAPI getSettings()
Definition Global.java:51
static FactoryAPI getFactory()
Definition Global.java:35
static void execute(InteractionDialogAPI dialog, String option)
static boolean isDevOption(Object optionData)