Starsector API
Loading...
Searching...
No Matches
TutorialSustainedBurnDialogPluginImpl.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.tutorial;
2
3import java.util.Map;
4
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.CampaignFleetAPI;
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.TextPanelAPI;
11import com.fs.starfarer.api.campaign.VisualPanelAPI;
12import com.fs.starfarer.api.campaign.PersistentUIDataAPI.AbilitySlotsAPI;
13import com.fs.starfarer.api.campaign.econ.MarketAPI;
14import com.fs.starfarer.api.campaign.rules.MemoryAPI;
15import com.fs.starfarer.api.combat.EngagementResultAPI;
16import com.fs.starfarer.api.impl.campaign.ids.Abilities;
17import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
18import com.fs.starfarer.api.loading.AbilitySpecAPI;
19import com.fs.starfarer.api.util.Misc;
20
21public class TutorialSustainedBurnDialogPluginImpl implements InteractionDialogPlugin {
22
23 public static enum OptionId {
24 INIT,
25 CONT1,
26 CONT2,
27 CONT3,
28 ;
29 }
30
31 protected InteractionDialogAPI dialog;
32 protected TextPanelAPI textPanel;
33 protected OptionPanelAPI options;
34 protected VisualPanelAPI visual;
35
36 protected CampaignFleetAPI playerFleet;
37
38 protected MarketAPI ancyra;
39
41 this.ancyra = ancyra;
42 }
43
44 public void init(InteractionDialogAPI dialog) {
45 this.dialog = dialog;
46 textPanel = dialog.getTextPanel();
47 options = dialog.getOptionPanel();
48 visual = dialog.getVisualPanel();
49
50 playerFleet = Global.getSector().getPlayerFleet();
51
52 //visual.showImagePortion("illustrations", "jump_point_hyper", 640, 400, 0, 0, 480, 300);
53 visual.showFleetInfo("Your fleet", playerFleet, null, null);
54
55 //dialog.setOptionOnEscape("Leave", OptionId.LEAVE);
56
57 optionSelected(null, OptionId.INIT);
58 }
59
60 public Map<String, MemoryAPI> getMemoryMap() {
61 return null;
62 }
63
64 public void backFromEngagement(EngagementResultAPI result) {
65 // no combat here, so this won't get called
66 }
67
68 public void optionSelected(String text, Object optionData) {
69 if (optionData == null) return;
70
71 OptionId option = (OptionId) optionData;
72
73 if (text != null) {
74 //textPanel.addParagraph(text, Global.getSettings().getColor("buttonText"));
75 dialog.addOptionSelectedText(option);
76 }
77
78
79 String name = ancyra.getName();
80
81 switch (option) {
82 case INIT:
83 textPanel.addParagraph(name + " is pretty far away, and it'll take a while to get there at this rate.");
84
85 options.clearOptions();
86 options.addOption("Continue", OptionId.CONT1, null);
87 break;
88 case CONT1:
89 AbilitySpecAPI ability = Global.getSettings().getAbilitySpec(Abilities.SUSTAINED_BURN);
90 textPanel.addPara("The %s ability is useful for long-distance travel. " +
91 "Activating it will briefly stop the fleet and reduce its acceleration to a minimum, " +
92 "but the maximum burn level will be much higher. A sustained burn can be interrupted " +
93 "by other fleets activating an interdiction pulse.",
94 Misc.getHighlightColor(),
95 "\"" + ability.getName() + "\"");
96
97 Global.getSector().getCharacterData().addAbility(ability.getId());
98 AbilitySlotsAPI slots = Global.getSector().getUIData().getAbilitySlotsAPI();
99 slots.setCurrBarIndex(0);
100
101 int slotIndex = 4;
102 slots.getCurrSlotsCopy().get(slotIndex).setAbilityId(ability.getId());
103 AddRemoveCommodity.addAbilityGainText(ability.getId(), textPanel);
104
105 Global.getSector().getCharacterData().addAbility(Abilities.INTERDICTION_PULSE);
106 slots.getCurrSlotsCopy().get(6).setAbilityId(Abilities.INTERDICTION_PULSE);
107 AddRemoveCommodity.addAbilityGainText(Abilities.INTERDICTION_PULSE, textPanel);
108
109 options.clearOptions();
110 options.addOption("Continue", OptionId.CONT2, null);
111
112 break;
113 case CONT2:
114 ability = Global.getSettings().getAbilitySpec(Abilities.SUSTAINED_BURN);
115
116 String control = Global.getSettings().getControlStringForEnumName("FAST_FORWARD");
117
118 textPanel.addPara("Activate %s to get to " + name + " more quickly.",
119 Misc.getHighlightColor(),
120 "\"" + ability.getName() + "\"");
121
122 textPanel.addPara("You can also press and hold %s to speed up time.",
123 Misc.getHighlightColor(),
124 "\"" + control + "\"");
125
126 options.clearOptions();
127 options.addOption("Finish", OptionId.CONT3, null);
128 break;
129 case CONT3:
130 Global.getSector().setPaused(false);
131 dialog.dismiss();
132 break;
133 }
134 }
135
136
137
138
139 public void optionMousedOver(String optionText, Object optionData) {
140
141 }
142
143 public void advance(float amount) {
144
145 }
146
147 public Object getContext() {
148 return null;
149 }
150}
151
152
153
static SettingsAPI getSettings()
Definition Global.java:51
static SectorAPI getSector()
Definition Global.java:59
AbilitySpecAPI getAbilitySpec(String abilityId)
String getControlStringForEnumName(String name)