1package com.fs.starfarer.api.impl.campaign;
3import java.util.HashMap;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.InteractionDialogAPI;
11import com.fs.starfarer.api.campaign.InteractionDialogPlugin;
12import com.fs.starfarer.api.campaign.OptionPanelAPI;
13import com.fs.starfarer.api.campaign.RuleBasedDialog;
14import com.fs.starfarer.api.campaign.TextPanelAPI;
15import com.fs.starfarer.api.campaign.VisualPanelAPI;
16import com.fs.starfarer.api.campaign.econ.MarketAPI;
17import com.fs.starfarer.api.campaign.events.CampaignEventPlugin;
18import com.fs.starfarer.api.campaign.rules.MemKeys;
19import com.fs.starfarer.api.campaign.rules.MemoryAPI;
20import com.fs.starfarer.api.campaign.rules.RulesAPI;
21import com.fs.starfarer.api.characters.PersonAPI;
22import com.fs.starfarer.api.combat.EngagementResultAPI;
23import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
24import com.fs.starfarer.api.impl.campaign.rulecmd.DismissDialog;
25import com.fs.starfarer.api.impl.campaign.rulecmd.DumpMemory;
26import com.fs.starfarer.api.impl.campaign.rulecmd.FireAll;
27import com.fs.starfarer.api.impl.campaign.rulecmd.FireBest;
28import com.fs.starfarer.api.util.Misc;
51 private Object custom1;
52 private Object custom2;
53 private Object custom3;
57 private boolean embeddedMode =
false;
59 this.embeddedMode = embeddedMode;
62 private final String initialTrigger;
65 this(
"OpenInteractionDialog");
68 this.initialTrigger = initialTrigger;
72 public void reinit(
boolean withContinueOnRuleFound) {
106 if (memoryMap ==
null) {
107 memoryMap =
new HashMap<String, MemoryAPI>();
129 if (market !=
null) {
134 updatePersonMemory();
137 private void updatePersonMemory() {
144 if (person !=
null) {
151 memoryMap.put(MemKeys.LOCAL, memory);
152 memoryMap.remove(MemKeys.ENTITY);
153 memoryMap.remove(MemKeys.PERSON_FACTION);
160 updatePersonMemory();
164 if (mission ==
null) {
168 if (memory !=
null) {
178 return FireAll.
fire(
null, dialog, memoryMap, trigger);
190 if (optionData ==
null || !(optionData instanceof String))
return;
192 String optionId = (String) optionData;
212 memory.
set(
"$option", optionId);
213 memory.
expire(
"$option", 0);
215 boolean foundRule =
fireBest(
"DialogOptionSelected");
217 textPanel.
addPara(
"ERROR: no rule found for option " + optionId +
219 textPanel.
addPara(
"Note: this may break any mission interaction in the current dialog, "
220 +
"it's recommended that you reload an earlier save if you use this option.");
228 private String lastOptionMousedOver =
null;
229 private Map<String, MemoryAPI> memoryMap;
240 private void addText(String text) {
241 if (text ==
null || text.isEmpty())
return;
246 private void appendText(String text) {
261 this.custom1 = custom1;
267 this.custom2 = custom2;
273 this.custom3 = custom3;
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static SectorAPI getSector()
static final String PERSON_FACTION
static final String MISSION
static final String LOCAL
static final String ENTITY
static final String FACTION
static final String MARKET
static final String SOURCE_MARKET
static final String GLOBAL
static final String PLAYER
Map< String, MemoryAPI > getMemoryMap()
void backFromEngagement(EngagementResultAPI result)
void setEmbeddedMode(boolean embeddedMode)
RuleBasedInteractionDialogPluginImpl(String initialTrigger)
void optionMousedOver(String optionText, Object optionData)
RuleBasedInteractionDialogPluginImpl()
void optionSelected(String text, Object optionData)
static final String FAILSAFE_LEAVE
void setCustom1(Object custom1)
void setActiveMission(CampaignEventPlugin mission)
void reinit(boolean withContinueOnRuleFound)
boolean fireBest(String trigger)
boolean fireAll(String trigger)
void setCustom2(Object custom2)
void init(InteractionDialogAPI dialog)
void advance(float amount)
void notifyActivePersonChanged()
void setCustom3(Object custom3)
static final String MEMORY_KEY_SOURCE_MARKET
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static final String OPTION_ID
static boolean fire(String ruleId, InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap, String params)
static boolean fire(String ruleId, InteractionDialogAPI dialog, Map< String, MemoryAPI > memoryMap, String params)
static Color getNegativeHighlightColor()
Color getColor(String id)
TextPanelAPI getTextPanel()
VisualPanelAPI getVisualPanel()
boolean isCurrentOptionHadAConfirm()
SectorEntityToken getInteractionTarget()
void addOptionSelectedText(Object optionId)
OptionPanelAPI getOptionPanel()
void addOption(String text, Object data)
CampaignFleetAPI getPlayerFleet()
CharacterDataAPI getCharacterData()
PersonAPI getActivePerson()
LabelAPI addPara(String text)
LabelAPI addParagraph(String text)
void appendToLastParagraph(String text)
void highlightInLastPara(Color color, String ...strings)
void setVisualFade(float in, float out)
MarketAPI getMarket(String id)
String getString(String key)
void expire(String key, float days)
boolean contains(String key)
void set(String key, Object value)