1package com.fs.starfarer.api.impl.campaign;
3import java.util.HashMap;
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;
23 private static enum OptionId {
29 private static enum State {
34 private InteractionDialogAPI dialog;
35 private TextPanelAPI textPanel;
36 private OptionPanelAPI options;
37 private VisualPanelAPI visual;
39 private CharacterCreationData data;
40 private SectorEntityToken entity;
42 private State state = State.OPTIONS;
43 private HashMap<String, MemoryAPI> memoryMap;
44 private MemoryAPI memory;
46 public void init(InteractionDialogAPI dialog) {
48 textPanel = dialog.getTextPanel();
49 options = dialog.getOptionPanel();
50 visual = dialog.getVisualPanel();
52 dialog.setOptionOnEscape(
"Leave", OptionId.LEAVE);
53 createInitialOptions();
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);
62 memoryMap.get(MemKeys.GLOBAL).set(
"$isDevMode",
true, 0);
66 dialog.setPromptText(
"-");
68 dialog.hideTextPanel();
69 visual.showNewGameOptionsPanel(data);
74 if (state == State.OPTIONS) {
75 String name = data.getCharacterData().getName();
76 if (name ==
null || name.isEmpty()) {
77 options.setEnabled(OptionId.CONTINUE_CHOICES,
false);
79 options.setEnabled(OptionId.CONTINUE_CHOICES,
true);
81 }
else if (state == State.CHOICES) {
97 if (optionData ==
null)
return;
99 if (text !=
null && state == State.CHOICES) {
101 dialog.addOptionSelectedText(optionData);
104 if (optionData instanceof String) {
105 if (optionData == DumpMemory.OPTION_ID) {
106 new DumpMemory().execute(
null, dialog,
null, memoryMap);
113 memory.set(
"$option", optionData);
114 memory.expire(
"$option", 0);
117 OptionId option = (OptionId) optionData;
120 dialog.dismissAsCancel();
122 case CONTINUE_CHOICES:
123 dialog.showTextPanel();
124 visual.showPersonInfo(data.getPerson(),
true);
125 options.clearOptions();
126 state = State.CHOICES;
133 private void createInitialOptions() {
134 options.clearOptions();
136 options.addOption(
"Continue", OptionId.CONTINUE_CHOICES,
null);
140 private OptionId lastOptionMousedOver =
null;
150 return FireAll.fire(
null, dialog, memoryMap, trigger);
154 return FireBest.fire(
null, dialog, memoryMap, trigger);
static SettingsAPI getSettings()
static FactoryAPI getFactory()