Starsector API
Loading...
Searching...
No Matches
FleetEncounterContextPlugin.java
Go to the documentation of this file.
1package com.fs.starfarer.api.campaign;
2
3import java.util.ArrayList;
4import java.util.HashMap;
5import java.util.LinkedHashSet;
6import java.util.List;
7import java.util.Map;
8import java.util.Set;
9
10import com.fs.starfarer.api.Global;
11import com.fs.starfarer.api.characters.PersonAPI;
12import com.fs.starfarer.api.combat.DeployedFleetMemberAPI;
13import com.fs.starfarer.api.combat.EngagementResultAPI;
14import com.fs.starfarer.api.fleet.CrewCompositionAPI;
15import com.fs.starfarer.api.fleet.FleetGoal;
16import com.fs.starfarer.api.fleet.FleetMemberAPI;
17
19
20 public static enum Status {
21 NORMAL,
22 DISABLED,
23 DESTROYED,
24 REPAIRED,
25 CAPTURED,
26 }
27
35 public static enum EngagementOutcome {
36 MUTUAL_DESTRUCTION,
37 BATTLE_PLAYER_WIN,
38 BATTLE_PLAYER_WIN_TOTAL,
39 BATTLE_ENEMY_WIN,
40 BATTLE_ENEMY_WIN_TOTAL,
41 ESCAPE_PLAYER_LOSS_TOTAL,
42 ESCAPE_PLAYER_SUCCESS,
43 ESCAPE_PLAYER_WIN,
44 ESCAPE_PLAYER_WIN_TOTAL,
45 ESCAPE_ENEMY_LOSS_TOTAL,
46 ESCAPE_ENEMY_SUCCESS,
47 ESCAPE_ENEMY_WIN,
48 ESCAPE_ENEMY_WIN_TOTAL,
49
50 BATTLE_PLAYER_OUT_FIRST_WIN,
51 BATTLE_PLAYER_OUT_FIRST_LOSS,
52 ESCAPE_PLAYER_OUT_FIRST_WIN,
53 ESCAPE_PLAYER_OUT_FIRST_LOSS,
54 PURSUIT_PLAYER_OUT_FIRST_WIN,
55 PURSUIT_PLAYER_OUT_FIRST_LOSS,
56 }
57
58 public static class FleetMemberData {
59 private Status status;
60 private FleetMemberAPI member;
61 public FleetMemberData(Status status, FleetMemberAPI member) {
62 this.status = status;
63 this.member = member;
64 }
65 public Status getStatus() {
66 return status;
67 }
68 public FleetMemberAPI getMember() {
69 return member;
70 }
71 public void setStatus(Status status) {
72 this.status = status;
73 }
74 public void setMember(FleetMemberAPI member) {
75 this.member = member;
76 }
77 }
78
79 public static class DataForEncounterSide {
80 public static class OfficerEngagementData {
81 public CampaignFleetAPI sourceFleet;
82 public PersonAPI person;
83 public float timeDeployed;
84 public OfficerEngagementData(CampaignFleetAPI sourceFleet) {
85 this.sourceFleet = sourceFleet;
86 }
87 }
88 private float maxTimeDeployed;
89 private Map<PersonAPI, OfficerEngagementData> officerData = new HashMap<PersonAPI, OfficerEngagementData>();
90 private Map<FleetMemberAPI, OfficerEngagementData> fleetMemberDeploymentData = new HashMap<FleetMemberAPI, OfficerEngagementData>();
91
92 private CampaignFleetAPI fleet;
93
94 private List<FleetMemberData> ownCasualties = new ArrayList<FleetMemberData>();
95 private List<FleetMemberData> enemyCasualties = new ArrayList<FleetMemberData>();
96
97 private List<FleetMemberAPI> deployedInLastEngagement = new ArrayList<FleetMemberAPI>();
98 private List<FleetMemberAPI> retreatedFromLastEngagement = new ArrayList<FleetMemberAPI>();
99 private List<FleetMemberAPI> inReserveDuringLastEngagement = new ArrayList<FleetMemberAPI>();
100 private List<FleetMemberAPI> disabledInLastEngagement = new ArrayList<FleetMemberAPI>();
101 private List<FleetMemberAPI> destroyedInLastEngagement = new ArrayList<FleetMemberAPI>();
102 private Map<FleetMemberAPI, DeployedFleetMemberAPI> memberToDeployedMap = new HashMap<FleetMemberAPI, DeployedFleetMemberAPI>();
103
104 private Set<FleetMemberAPI> membersWithOfficerOrPlayerAsOrigCaptain = new LinkedHashSet<FleetMemberAPI>();
105
106 private CrewCompositionAPI crewLossesDuringLastEngagement = Global.getFactory().createCrewComposition();
107 private CrewCompositionAPI recoverableCrewLosses = Global.getFactory().createCrewComposition();
108
109 private boolean wonLastEngagement = false;
110 private FleetGoal lastGoal = null;
111 private boolean disengaged = false;
112 private boolean didEnoughToDisengage = false;
113 private boolean enemyCanCleanDisengage = false;
114 //private boolean fleetCanCleanDisengage = false;
115
116 public DataForEncounterSide(CampaignFleetAPI fleet) {
117 this.fleet = fleet;
118 }
119
120 public Set<FleetMemberAPI> getMembersWithOfficerOrPlayerAsOrigCaptain() {
121 return membersWithOfficerOrPlayerAsOrigCaptain;
122 }
123
124 public float getMaxTimeDeployed() {
125 return maxTimeDeployed;
126 }
127
128 public void setMaxTimeDeployed(float maxTimeDeployed) {
129 this.maxTimeDeployed = maxTimeDeployed;
130 }
131
132 public Map<PersonAPI, OfficerEngagementData> getOfficerData() {
133 return officerData;
134 }
135 public Map<FleetMemberAPI, OfficerEngagementData> getFleetMemberDeploymentData() {
136 return fleetMemberDeploymentData;
137 }
138
139 public CrewCompositionAPI getRecoverableCrewLosses() {
140 return recoverableCrewLosses;
141 }
142 public CrewCompositionAPI getCrewLossesDuringLastEngagement() {
143 return crewLossesDuringLastEngagement;
144 }
145 public CampaignFleetAPI getFleet() {
146 return fleet;
147 }
148 public List<FleetMemberData> getOwnCasualties() {
149 return ownCasualties;
150 }
151 public List<FleetMemberData> getEnemyCasualties() {
152 return enemyCasualties;
153 }
154 public void addOwn(FleetMemberAPI member, Status status) {
155 ownCasualties.add(new FleetMemberData(status, member));
156 }
157 public void removeOwnCasualty(FleetMemberAPI member) {
158 for (FleetMemberData data : ownCasualties) {
159 if (data.member == member) {
160 ownCasualties.remove(data);
161 break;
162 }
163 }
164 }
165 public void removeEnemyCasualty(FleetMemberAPI member) {
166 for (FleetMemberData data : enemyCasualties) {
167 if (data.member == member) {
168 enemyCasualties.remove(data);
169 break;
170 }
171 }
172 }
173 public void changeOwn(FleetMemberAPI member, Status newStatus) {
174 for (FleetMemberData data : ownCasualties) {
175 if (data.member == member) {
176 data.status = newStatus;
177 break;
178 }
179 }
180 }
181 public void changeEnemy(FleetMemberAPI member, Status newStatus) {
182 for (FleetMemberData data : enemyCasualties) {
183 if (data.member == member) {
184 data.status = newStatus;
185 break;
186 }
187 }
188 }
189 public void addEnemy(FleetMemberAPI member, Status status) {
190 enemyCasualties.add(new FleetMemberData(status, member));
191 }
192 public boolean isWonLastEngagement() {
193 return wonLastEngagement;
194 }
195 public void setWonLastEngagement(boolean wonLastEngagement) {
196 this.wonLastEngagement = wonLastEngagement;
197 }
198 public FleetGoal getLastGoal() {
199 return lastGoal;
200 }
201 public void setLastGoal(FleetGoal lastGoal) {
202 this.lastGoal = lastGoal;
203 }
204 public boolean disengaged() {
205 return disengaged;
206 }
207 public void setDisengaged(boolean disengaged) {
208 this.disengaged = disengaged;
209 }
210 public List<FleetMemberAPI> getDeployedInLastEngagement() {
211 return deployedInLastEngagement;
212 }
213 public List<FleetMemberAPI> getRetreatedFromLastEngagement() {
214 return retreatedFromLastEngagement;
215 }
216 public List<FleetMemberAPI> getInReserveDuringLastEngagement() {
217 return inReserveDuringLastEngagement;
218 }
219 public List<FleetMemberAPI> getDisabledInLastEngagement() {
220 return disabledInLastEngagement;
221 }
222 public List<FleetMemberAPI> getDestroyedInLastEngagement() {
223 return destroyedInLastEngagement;
224 }
225 public boolean isDidEnoughToDisengage() {
226 return didEnoughToDisengage;
227 }
228 public void setDidEnoughToDisengage(boolean didEnoughToDisengage) {
229 this.didEnoughToDisengage = didEnoughToDisengage;
230 }
235 public Map<FleetMemberAPI, DeployedFleetMemberAPI> getMemberToDeployedMap() {
236 return memberToDeployedMap;
237 }
238
239 public boolean isEnemyCanCleanDisengage() {
240 return enemyCanCleanDisengage;
241 }
242
243 public void setEnemyCanCleanDisengage(boolean enemyCanCleanDisengage) {
244 this.enemyCanCleanDisengage = enemyCanCleanDisengage;
245 }
246
247// public boolean isFleetCanCleanDisengage() {
248// return fleetCanCleanDisengage;
249// }
250//
251// public void setFleetCanCleanDisengage(boolean fleetCanCleanDisengage) {
252// this.fleetCanCleanDisengage = fleetCanCleanDisengage;
253// }
254
255
256 }
257
258 public static enum PursueAvailability {
259 AVAILABLE,
260 TOO_SLOW,
261 NO_READY_SHIPS,
262 TOOK_SERIOUS_LOSSES,
263 LOST_LAST_ENGAGEMENT,
264 }
265
266 public static enum DisengageHarryAvailability {
267 AVAILABLE,
268 NO_READY_SHIPS,
269 LOST_LAST_ENGAGEMENT,
270 }
271
272
273 DataForEncounterSide getDataFor(CampaignFleetAPI fleet);
274 DataForEncounterSide getWinnerData();
275 DataForEncounterSide getLoserData();
278
280
281 EngagementOutcome getLastEngagementOutcome();
282
283 PursueAvailability getPursuitAvailability(CampaignFleetAPI fleet, CampaignFleetAPI otherFleet);
284 DisengageHarryAvailability getDisengageHarryAvailability(CampaignFleetAPI fleet, CampaignFleetAPI otherFleet);
285
286
292 float performPostVictoryRecovery(EngagementResultAPI result);
294 void setOtherFleetHarriedPlayer(boolean otherFleetHarriedPlayer);
296 boolean adjustPlayerReputation(InteractionDialogAPI dialog, String ffText);
298 //boolean isLowRepImpact();
299
300 //void applyPostEngagementOption(EngagementResultAPI result);
301
302}
303
304
305
static FactoryAPI getFactory()
Definition Global.java:35
CrewCompositionAPI createCrewComposition()
float performPostVictoryRecovery(EngagementResultAPI result)
DataForEncounterSide getDataFor(CampaignFleetAPI fleet)
DisengageHarryAvailability getDisengageHarryAvailability(CampaignFleetAPI fleet, CampaignFleetAPI otherFleet)
boolean adjustPlayerReputation(InteractionDialogAPI dialog, String ffText)
PursueAvailability getPursuitAvailability(CampaignFleetAPI fleet, CampaignFleetAPI otherFleet)
void setOtherFleetHarriedPlayer(boolean otherFleetHarriedPlayer)