Starsector API
Loading...
Searching...
No Matches
FleetCreatorMission.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.missions;
2
3import java.util.List;
4import java.util.Random;
5
6import org.lwjgl.util.vector.Vector2f;
7
8import com.fs.starfarer.api.campaign.CampaignFleetAPI;
9import com.fs.starfarer.api.campaign.econ.MarketAPI;
10import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
11import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithTriggers;
12import com.fs.starfarer.api.impl.campaign.missions.hub.MissionFleetAutoDespawn;
13import com.fs.starfarer.api.util.Misc;
14
15public class FleetCreatorMission extends HubMissionWithTriggers {
16
17 public static enum FleetStyle {
18 QUANTITY,
19 STANDARD,
20 QUALITY,
21 }
22
23 protected static Object STAGE = new Object();
24
25 protected String fleetTypeSmall = FleetTypes.PATROL_SMALL;
26 protected String fleetTypeMedium = FleetTypes.PATROL_MEDIUM;
27 protected String fleetTypeLarge = FleetTypes.PATROL_LARGE;
28
29
30 public FleetCreatorMission(Random random) {
31 super();
32 setMissionId("fcm_" + Misc.genUID());
33 setGenRandom(random);
34 }
35
36 public void beginFleet() {
37 beginStageTrigger(STAGE);
38 triggerMakeAllFleetFlagsPermanent();
39 }
40
41 public CampaignFleetAPI createFleet() {
42 endTrigger();
43
44 List<CampaignFleetAPI> fleets = runStageTriggersReturnFleets(STAGE);
45 if (fleets.isEmpty()) return null;
46
47 CampaignFleetAPI fleet = fleets.get(0);
48 fleet.removeScriptsOfClass(MissionFleetAutoDespawn.class);
49 return fleet;
50 }
51
52 @Override
53 protected boolean create(MarketAPI createdAt, boolean barEvent) {
54 return false;
55 }
56
57
58 public void createFleet(FleetStyle style, int difficulty, String factionId, Vector2f locInHyper) {
59 if (style == FleetStyle.STANDARD || style == null) {
60 createStandardFleet(difficulty, factionId, locInHyper);
61 } else if (style == FleetStyle.QUANTITY) {
62 createQuantityFleet(difficulty, factionId, locInHyper);
63 } else if (style == FleetStyle.QUALITY) {
64 createQualityFleet(difficulty, factionId, locInHyper);
65 }
66 }
67
68
69 public void createStandardFleet(int difficulty, String factionId, Vector2f locInHyper) {
70 FleetSize size = FleetSize.MEDIUM;
71 FleetQuality quality = FleetQuality.DEFAULT;
72 String type = fleetTypeMedium;
73 OfficerQuality oQuality = OfficerQuality.DEFAULT;
74 OfficerNum oNum = OfficerNum.DEFAULT;
75
76 //Global.getSector().getEconomy().getMarket("b07a");
77
78 if (difficulty <= 0) {
79 size = FleetSize.TINY;
80 quality = FleetQuality.VERY_LOW;
81 oQuality = OfficerQuality.LOWER;
82 oNum = OfficerNum.FC_ONLY;
83 type = fleetTypeSmall;
84 } else if (difficulty == 1) {
85 size = FleetSize.VERY_SMALL;
86 quality = FleetQuality.VERY_LOW;
87 oQuality = OfficerQuality.LOWER;
88 oNum = OfficerNum.FC_ONLY;
89 type = fleetTypeSmall;
90 } else if (difficulty == 2) {
91 size = FleetSize.SMALL;
92 quality = FleetQuality.DEFAULT;
93 oQuality = OfficerQuality.LOWER;
94 oNum = OfficerNum.FEWER;
95 type = fleetTypeSmall;
96 } else if (difficulty == 3) {
97 size = FleetSize.SMALL;
98 quality = FleetQuality.DEFAULT;
99 oQuality = OfficerQuality.DEFAULT;
100 oNum = OfficerNum.DEFAULT;
101 type = fleetTypeMedium;
102 } else if (difficulty == 4) {
103 size = FleetSize.MEDIUM;
104 quality = FleetQuality.DEFAULT;
105 oQuality = OfficerQuality.DEFAULT;
106 oNum = OfficerNum.DEFAULT;
107 type = fleetTypeMedium;
108 } else if (difficulty == 5) {
109 size = FleetSize.LARGE;
110 quality = FleetQuality.DEFAULT;
111 oQuality = OfficerQuality.DEFAULT;
112 oNum = OfficerNum.DEFAULT;
113 type = fleetTypeLarge;
114 } else if (difficulty == 6) {
115 size = FleetSize.LARGE;
116 quality = FleetQuality.HIGHER;
117 oQuality = OfficerQuality.DEFAULT;
118 oNum = OfficerNum.MORE;
119 type = fleetTypeLarge;
120 } else if (difficulty == 7) {
121 size = FleetSize.LARGER;
122 quality = FleetQuality.HIGHER;
123 oQuality = OfficerQuality.DEFAULT;
124 oNum = OfficerNum.MORE;
125 type = fleetTypeLarge;
126 } else if (difficulty == 8) {
127 size = FleetSize.VERY_LARGE;
128 quality = FleetQuality.HIGHER;
129 oQuality = OfficerQuality.DEFAULT;
130 oNum = OfficerNum.MORE;
131 type = fleetTypeLarge;
132 } else if (difficulty == 9) {
133 size = FleetSize.VERY_LARGE;
134 quality = FleetQuality.HIGHER;
135 oQuality = OfficerQuality.HIGHER;
136 oNum = OfficerNum.MORE;
137 type = fleetTypeLarge;
138 } else {// if (difficulty == 10) {
139 size = FleetSize.HUGE;
140 quality = FleetQuality.HIGHER;
141 oQuality = OfficerQuality.HIGHER;
142 oNum = OfficerNum.MORE;
143 //oNum = OfficerNum.ALL_SHIPS;
144 type = fleetTypeLarge;
145 }
146
147 triggerCreateFleet(size, quality, factionId, type, locInHyper);
148 triggerSetFleetOfficers(oNum, oQuality);
149 //triggerAutoAdjustFleetSize(size, size.next());
150 }
151
152
153 public void createQualityFleet(int difficulty, String factionId, Vector2f locInHyper) {
154 FleetSize size = FleetSize.MEDIUM;
155 FleetQuality quality = FleetQuality.DEFAULT;
156 String type = fleetTypeMedium;
157 OfficerQuality oQuality = OfficerQuality.DEFAULT;
158 OfficerNum oNum = OfficerNum.DEFAULT;
159
160 if (difficulty <= 0) {
161 size = FleetSize.TINY;
162 quality = FleetQuality.VERY_HIGH;
163 oQuality = OfficerQuality.DEFAULT;
164 oNum = OfficerNum.FC_ONLY;
165 type = fleetTypeSmall;
166 } else if (difficulty == 1) {
167 size = FleetSize.VERY_SMALL;
168 quality = FleetQuality.VERY_HIGH;
169 oQuality = OfficerQuality.DEFAULT;
170 oNum = OfficerNum.FC_ONLY;
171 type = fleetTypeSmall;
172 } else if (difficulty == 2) {
173 size = FleetSize.VERY_SMALL;
174 quality = FleetQuality.VERY_HIGH;
175 oQuality = OfficerQuality.DEFAULT;
176 oNum = OfficerNum.DEFAULT;
177 type = fleetTypeSmall;
178 } else if (difficulty == 3) {
179 size = FleetSize.SMALL;
180 quality = FleetQuality.VERY_HIGH;
181 oQuality = OfficerQuality.DEFAULT;
182 oNum = OfficerNum.DEFAULT;
183 type = fleetTypeSmall;
184 } else if (difficulty == 4) {
185 size = FleetSize.SMALL;
186 quality = FleetQuality.VERY_HIGH;
187 oQuality = OfficerQuality.HIGHER;
188 oNum = OfficerNum.MORE;
189 type = fleetTypeSmall;
190 } else if (difficulty == 5) {
191 size = FleetSize.MEDIUM;
192 quality = FleetQuality.SMOD_1;
193 oQuality = OfficerQuality.DEFAULT;
194 oNum = OfficerNum.DEFAULT;
195 type = fleetTypeMedium;
196 } else if (difficulty == 6) {
197 size = FleetSize.MEDIUM;
198 quality = FleetQuality.SMOD_1;
199 oQuality = OfficerQuality.DEFAULT;
200 oNum = OfficerNum.MORE;
201 type = fleetTypeMedium;
202 } else if (difficulty == 7) {
203 size = FleetSize.LARGE;
204 quality = FleetQuality.SMOD_1;
205 oQuality = OfficerQuality.DEFAULT;
206 oNum = OfficerNum.DEFAULT;
207 type = fleetTypeMedium;
208 } else if (difficulty == 8) {
209 size = FleetSize.LARGE;
210 quality = FleetQuality.SMOD_1;
211 oQuality = OfficerQuality.HIGHER;
212 oNum = OfficerNum.MORE;
213 type = fleetTypeLarge;
214 } else if (difficulty == 9) {
215 size = FleetSize.VERY_LARGE;
216 quality = FleetQuality.SMOD_1;
217 oQuality = OfficerQuality.HIGHER;
218 oNum = OfficerNum.MORE;
219 type = fleetTypeLarge;
220 } else {// if (difficulty == 10) {
221 size = FleetSize.VERY_LARGE;
222 quality = FleetQuality.SMOD_2;
223 oQuality = OfficerQuality.HIGHER;
224 oNum = OfficerNum.MORE;
225 type = fleetTypeLarge;
226 }
227
228 triggerCreateFleet(size, quality, factionId, type, locInHyper);
229 triggerSetFleetOfficers(oNum, oQuality);
230
231 // don't do this - quality is always 0 anyway, and it can mess up fleet type names
232 //triggerAutoAdjustFleetSize(size, size.next());
233 }
234
235
236 public void createQuantityFleet(int difficulty, String factionId, Vector2f locInHyper) {
237 FleetSize size = FleetSize.MEDIUM;
238 FleetQuality quality = FleetQuality.DEFAULT;
239 String type = fleetTypeMedium;
240 OfficerQuality oQuality = OfficerQuality.DEFAULT;
241 OfficerNum oNum = OfficerNum.DEFAULT;
242
243 if (difficulty <= 0) {
244 size = FleetSize.SMALL;
245 quality = FleetQuality.LOWER;
246 oQuality = OfficerQuality.LOWER;
247 oNum = OfficerNum.FC_ONLY;
248 type = fleetTypeSmall;
249 } else if (difficulty == 1) {
250 size = FleetSize.SMALL;
251 quality = FleetQuality.DEFAULT;
252 oQuality = OfficerQuality.DEFAULT;
253 oNum = OfficerNum.DEFAULT;
254 type = fleetTypeSmall;
255 } else if (difficulty == 2) {
256 size = FleetSize.MEDIUM;
257 quality = FleetQuality.LOWER;
258 oQuality = OfficerQuality.DEFAULT;
259 oNum = OfficerNum.DEFAULT;
260 type = fleetTypeMedium;
261 } else if (difficulty == 3) {
262 size = FleetSize.MEDIUM;
263 quality = FleetQuality.DEFAULT;
264 oQuality = OfficerQuality.DEFAULT;
265 oNum = OfficerNum.DEFAULT;
266 type = fleetTypeMedium;
267 } else if (difficulty == 4) {
268 size = FleetSize.LARGE;
269 quality = FleetQuality.LOWER;
270 oQuality = OfficerQuality.HIGHER;
271 oNum = OfficerNum.DEFAULT;
272 type = fleetTypeMedium;
273 } else if (difficulty == 5) {
274 size = FleetSize.LARGE;
275 quality = FleetQuality.DEFAULT;
276 oQuality = OfficerQuality.DEFAULT;
277 oNum = OfficerNum.DEFAULT;
278 type = fleetTypeMedium;
279 } else if (difficulty == 6) {
280 size = FleetSize.LARGER;
281 quality = FleetQuality.LOWER;
282 oQuality = OfficerQuality.DEFAULT;
283 oNum = OfficerNum.DEFAULT;
284 type = fleetTypeLarge;
285 } else if (difficulty == 7) {
286 size = FleetSize.LARGER;
287 quality = FleetQuality.DEFAULT;
288 oQuality = OfficerQuality.DEFAULT;
289 oNum = OfficerNum.DEFAULT;
290 type = fleetTypeLarge;
291 } else if (difficulty == 8) {
292 size = FleetSize.VERY_LARGE;
293 quality = FleetQuality.DEFAULT;
294 oQuality = OfficerQuality.DEFAULT;
295 oNum = OfficerNum.DEFAULT;
296 type = fleetTypeLarge;
297 } else if (difficulty == 9) {
298 size = FleetSize.HUGE;
299 quality = FleetQuality.DEFAULT;
300 oQuality = OfficerQuality.DEFAULT;
301 oNum = OfficerNum.DEFAULT;
302 type = fleetTypeLarge;
303 } else {// if (difficulty == 10) {
304 size = FleetSize.MAXIMUM;
305 quality = FleetQuality.DEFAULT;
306 oQuality = OfficerQuality.DEFAULT;
307 oNum = OfficerNum.MORE;
308 type = fleetTypeLarge;
309 }
310
311 triggerCreateFleet(size, quality, factionId, type, locInHyper);
312 triggerSetFleetOfficers(oNum, oQuality);
313 //triggerAutoAdjustFleetSize(size, size.next());
314 }
315
316
317 public void setFleetTypes(String small, String medium, String large) {
318 fleetTypeSmall = small;
319 fleetTypeMedium = medium;
320 fleetTypeLarge = large;
321 }
322
323 public String getFleetTypeSmall() {
324 return fleetTypeSmall;
325 }
326
327 public void setFleetTypeSmall(String fleetTypeSmall) {
328 this.fleetTypeSmall = fleetTypeSmall;
329 }
330
331 public String getFleetTypeMedium() {
332 return fleetTypeMedium;
333 }
334
336 this.fleetTypeMedium = fleetTypeMedium;
337 }
338
339 public String getFleetTypeLarge() {
340 return fleetTypeLarge;
341 }
342
343 public void setFleetTypeLarge(String fleetTypeLarge) {
344 this.fleetTypeLarge = fleetTypeLarge;
345 }
346}
347
348
349
350
void createQualityFleet(int difficulty, String factionId, Vector2f locInHyper)
void createStandardFleet(int difficulty, String factionId, Vector2f locInHyper)
void setFleetTypes(String small, String medium, String large)
void createFleet(FleetStyle style, int difficulty, String factionId, Vector2f locInHyper)
void createQuantityFleet(int difficulty, String factionId, Vector2f locInHyper)