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