1package com.fs.starfarer.api.impl.campaign.rulecmd;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.BaseStoryPointActionDelegate;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.OptionPanelAPI.OptionTooltipCreator;
10import com.fs.starfarer.api.campaign.StoryPointActionDelegate;
11import com.fs.starfarer.api.campaign.TextPanelAPI;
12import com.fs.starfarer.api.campaign.rules.MemoryAPI;
13import com.fs.starfarer.api.ui.TooltipMakerAPI;
14import com.fs.starfarer.api.util.Misc;
15import com.fs.starfarer.api.util.Misc.Token;
28 public static class StoryOptionParams {
29 public Object optionId;
31 public String bonusXPID;
32 public String soundId;
33 public String logText;
34 public StoryOptionParams(Object optionId,
int numPoints, String bonusXPID, String soundId, String logText) {
35 this.optionId = optionId;
36 this.numPoints = numPoints;
37 this.bonusXPID = bonusXPID;
38 this.soundId = soundId;
39 this.logText = logText;
45 protected Object optionId;
46 protected float bonusXPFraction;
48 protected int numPoints;
49 protected String soundId;
50 protected String logText;
52 public BaseOptionStoryPointActionDelegate(
InteractionDialogAPI dialog, StoryOptionParams params) {
53 this.optionId = params.optionId;
56 this.numPoints = params.numPoints;
57 this.soundId = params.soundId;
58 this.logText = params.logText;
61 public void preConfirm() {
65 public void confirm() {
72 addActionCostSection(info);
82 int percent = Math.round(bonusXPFraction * 100f);
86 info.
addPara(
"This action requires a %s and does not grant any bonus experience.",
89 info.
addPara(
"This action requires a %s and grants %s bonus experience.",
94 info.
addPara(
"This action requires %s and does not grant any bonus experience.",
97 info.
addPara(
"This action requires %s and grants %s bonus experience for each point.",
104 }
else if (sp < numPoints) {
105 String points =
"points";
106 if (sp == 1) points =
"point";
114 public float getBonusXPFraction() {
115 return bonusXPFraction;
118 public String getConfirmSoundId() {
119 String soundId = this.soundId;
120 if (
"leadership".equals(soundId)) soundId =
"ui_char_spent_story_point_leadership";
121 if (
"combat".equals(soundId)) soundId =
"ui_char_spent_story_point_combat";
122 if (
"industry".equals(soundId)) soundId =
"ui_char_spent_story_point_industry";
123 if (
"technology".equals(soundId)) soundId =
"ui_char_spent_story_point_technology";
124 if (
"general".equals(soundId)) soundId =
"ui_char_spent_story_point_combat";
125 if (
"generic".equals(soundId)) soundId =
"ui_char_spent_story_point_combat";
129 public int getRequiredStoryPoints() {
133 public String getLogText() {
138 if (dialog ==
null)
return null;
142 public String getTitle() {
147 public boolean withSPInfo() {
152 public static boolean set(String ruleId,
InteractionDialogAPI dialog, Map<String, MemoryAPI> memoryMap, String params) {
157 if (dialog ==
null)
return false;
162 String optionId =
"";
163 String bonusXPID =
"";
165 String logText =
null;
167 if (params.size() == 3) {
168 optionId = params.get(0).string;
170 bonusXPID = optionId;
171 soundId = params.get(1).string;
172 logText = params.get(2).getStringWithTokenReplacement(params.get(2).getString(memoryMap), dialog, memoryMap);
174 optionId = params.get(0).string;
175 numPoints = (int) params.get(1).getFloat(memoryMap);
176 bonusXPID = params.get(2).getString(memoryMap);
179 soundId = params.size() >= 4 ? params.get(3).string :
null;
186 if (params.size() >= 5) {
188 logText = params.get(4).getStringWithTokenReplacement(params.get(4).getString(memoryMap), dialog, memoryMap);
192 return set(dialog, numPoints, optionId, bonusXPID, soundId, logText);
197 final Object optionId, String bonusXPID,
final String soundId, String logText) {
199 StoryOptionParams params =
new StoryOptionParams(optionId, numPoints, bonusXPID, soundId, logText);
200 return set(dialog, params,
new BaseOptionStoryPointActionDelegate(dialog, params));
206 dialog.makeStoryOption(params.optionId, params.numPoints, bonusXPFraction, params.soundId);
209 dialog.getOptionPanel().setEnabled(params.optionId,
false);
212 dialog.getOptionPanel().addOptionTooltipAppender(params.optionId,
new OptionTooltipCreator() {
213 public void createTooltip(
TooltipMakerAPI tooltip,
boolean hadOtherText) {
216 if (hadOtherText) initPad = opad;
219 String points =
"points";
220 if (sp == 1) points =
"point";
226 dialog.getOptionPanel().addOptionConfirmation(params.optionId, delegate);
228 dialog.getOptionPanel().setStoryOptionParams(params.optionId, params, delegate);
static SettingsAPI getSettings()
static SectorAPI getSector()
boolean execute(String ruleId, final InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static Color getStoryOptionColor()
static Color getNegativeHighlightColor()
static List< Token > tokenize(String string)
float getBonusXP(String key)
TextPanelAPI getTextPanel()
void addOptionSelectedText(Object optionId)
MutableCharacterStatsAPI getPlayerStats()