Starsector API
Loading...
Searching...
No Matches
StandardRespawnDialogPluginImpl.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign;
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.rules.MemoryAPI;
13import com.fs.starfarer.api.characters.OfficerDataAPI;
14import com.fs.starfarer.api.combat.EngagementResultAPI;
15import com.fs.starfarer.api.fleet.FleetMemberAPI;
16import com.fs.starfarer.api.impl.campaign.fleets.FleetFactoryV3;
17import com.fs.starfarer.api.impl.campaign.ids.Abilities;
18import com.fs.starfarer.api.impl.campaign.ids.Factions;
19import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
20import com.fs.starfarer.api.impl.campaign.shared.PersonBountyEventData;
21import com.fs.starfarer.api.impl.campaign.shared.SharedData;
22import com.fs.starfarer.api.util.Misc;
23
24public class StandardRespawnDialogPluginImpl implements InteractionDialogPlugin {
25
26 public static enum OptionId {
27 INIT,
28 RESPAWN,
29 ;
30 }
31
32 protected InteractionDialogAPI dialog;
33 protected TextPanelAPI textPanel;
34 protected OptionPanelAPI options;
35 protected VisualPanelAPI visual;
36
37 protected CampaignFleetAPI playerFleet;
38
39 public void init(InteractionDialogAPI dialog) {
40 this.dialog = dialog;
41 textPanel = dialog.getTextPanel();
42 options = dialog.getOptionPanel();
43 visual = dialog.getVisualPanel();
44
45 playerFleet = Global.getSector().getPlayerFleet();
46
47 visual.showImagePortion("illustrations", "space_wreckage", 640, 400, 0, 0, 480, 300);
48
49 optionSelected(null, OptionId.INIT);
50 }
51
52 public Map<String, MemoryAPI> getMemoryMap() {
53 return null;
54 }
55
56 public void backFromEngagement(EngagementResultAPI result) {
57 // no combat here, so this won't get called
58 }
59
60 public void optionSelected(String text, Object optionData) {
61 if (optionData == null) return;
62
63 OptionId option = (OptionId) optionData;
64
65 if (text != null) {
66 //textPanel.addParagraph(text, Global.getSettings().getColor("buttonText"));
67 dialog.addOptionSelectedText(option);
68 }
69
70 switch (option) {
71 case INIT:
72 textPanel.addParagraph("Your fleet has been defeated!");
73
74 textPanel.addParagraph("Normally, if this happens you and your remaining crew will " +
75 "spend some time \"behind the scenes\" assembling a smaller fleet of recovered " +
76 "ships.");
77
78 textPanel.addParagraph("During the course of this tutorial, the only available option is to reload the last save.");
79
80 options.clearOptions();
81 options.addOption("Continue", OptionId.RESPAWN, null);
82 break;
83 case RESPAWN:
84
86
87 dialog.dismiss();
88 Global.getSector().getCampaignUI().quickLoad();
89 break;
90 }
91 }
92
93
94 protected void createPlayerFleet() {
95
96 float fp = 10;
97 float crew = 50;
98
99 float daysSince = Global.getSector().getClock().getElapsedDaysSince(SharedData.getData().getPlayerLosingBattleTimestamp());
100 if (daysSince < 2) {
101 fp = SharedData.getData().getPlayerPreLosingBattleFP();
102 crew = SharedData.getData().getPlayerPreLosingBattleCrew();
103 }
104
105 CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
106
107
108
109 for (CampaignFleetAPI other : Global.getSector().getCurrentLocation().getFleets()) {
110 MemoryAPI mem = other.getMemoryWithoutUpdate();
111 if (mem.getBoolean(MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF)) {
112 mem.removeAllRequired(MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF);
113 //System.out.println("Hostile: " + mem.getBoolean(MemFlags.MEMORY_KEY_MAKE_HOSTILE_WHILE_TOFF));
114 }
115 mem.unset(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_OFF);
116
117 if (!Misc.isPermaKnowsWhoPlayerIs(other)) {
118 mem.unset(MemFlags.MEMORY_KEY_SAW_PLAYER_WITH_TRANSPONDER_ON);
119 }
120 }
121
122 CampaignFleetAPI fleet = FleetFactoryV3.createEmptyFleet(Factions.PLAYER, null, null);
123 fleet.setName("Fleet");
124
125 Global.getSector().setCurrentLocation(Global.getSector().getHyperspace());
126 fleet.setLocation(1000000000f, 1000000000f);
127
128 for (OfficerDataAPI officer : playerFleet.getFleetData().getOfficersCopy()) {
129 fleet.getFleetData().addOfficer(officer);
130 }
131
132 Global.getSector().setPlayerFleet(fleet);
133 Global.getSector().setLastPlayerBattleTimestamp(Long.MIN_VALUE);
134 Global.getSector().setLastPlayerBattleWon(false);
135
136
137 fleet.getFleetData().setSyncNeeded();
138 fleet.getFleetData().syncIfNeeded();
139
140 for (FleetMemberAPI member : fleet.getFleetData().getMembersListCopy()) {
141 float max = member.getRepairTracker().getMaxCR();
142 member.getRepairTracker().setCR(max);
143 }
144
145
146 for (String id : Global.getSector().getCharacterData().getAbilities()) {
147 fleet.addAbility(id);
148 }
149
150 if (fleet.getAbility(Abilities.TRANSPONDER) != null) {
151 fleet.getAbility(Abilities.TRANSPONDER).activate();
152 }
153
154 Global.getSector().setPaused(true);
155
156// float minCredits = 2000;
157// float newCredits = Math.max(credits * 0.8f, minCredits);
158// float change = credits - newCredits;
159//
160// fleet.getCargo().getCredits().add(newCredits);
161// if (change > 0) {
162// addMessage("Lost " + (int)(change) + " credits");
163// } else if (change < 0) {
164// addMessage("Gained " + (int)(-change) + " credits");
165// }
166
167 Global.getSector().getCampaignUI().resetViewOffset();
168
169 Misc.clearAreaAroundPlayer(2000f);
170
171 PersonBountyEventData data = SharedData.getData().getPersonBountyEventData();
172 data.setLevel(Math.max(0, data.getLevel() - 1));
173 data.setSuccessesThisLevel(0);
174 }
175
176
177
178
179
180 public void optionMousedOver(String optionText, Object optionData) {
181
182 }
183
184 public void advance(float amount) {
185
186 }
187
188 public Object getContext() {
189 return null;
190 }
191}
192
193
194
static SectorAPI getSector()
Definition Global.java:59