Starsector API
Loading...
Searching...
No Matches
PersonalFleetScript.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.fleets;
2
3import java.util.Random;
4
5import com.fs.starfarer.api.EveryFrameScript;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.BattleAPI;
8import com.fs.starfarer.api.campaign.CampaignEventListener.FleetDespawnReason;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.econ.MarketAPI;
11import com.fs.starfarer.api.campaign.listeners.FleetEventListener;
12import com.fs.starfarer.api.characters.PersonAPI;
13import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
14import com.fs.starfarer.api.impl.campaign.ids.People;
15import com.fs.starfarer.api.util.Misc;
16
17public abstract class PersonalFleetScript implements EveryFrameScript, FleetEventListener {
18
19 protected String personId;
20
21 protected float minRespawnDelayDays = 1f;
22 protected float maxRespawnDelayDays = 2f;
23
24 protected float minFailedSpawnRespawnDelayDays = 1f;
25 protected float maxFailedSpawnRespawnDelayDays = 2f;
26 protected float currDelay;
28 protected Random random = new Random();
29 protected boolean done = false;
30 protected String defeatTrigger = null;
31
32 protected float origFP = 0f;
33
35 this.personId = personId;
37 }
38
41 }
42
43 public boolean isDone() {
44 return done;
45 }
46
47 public boolean runWhilePaused() {
48 return false;
49 }
50
51 public String getDefeatTrigger() {
52 return defeatTrigger;
53 }
54
55 public void setDefeatTrigger(String defeatTrigger) {
56 this.defeatTrigger = defeatTrigger;
57 }
58
59 protected abstract MarketAPI getSourceMarket();
60
61 public void advance(float amount) {
62 if (amount <= 0 || isDone()) return;
63
64 if (fleet != null && !fleet.isAlive()) {
65 fleet = null;
66 }
67
68 if (fleet == null) {
69 float days = Global.getSector().getClock().convertToDays(amount);
70 currDelay -= days;
71 if (currDelay <= 0f) {
72 currDelay = 0f;
73
74 if (shouldScriptBeRemoved() || getPerson() == null) {
75 done = true;
76 return;
77 }
78
79 if (canSpawnFleetNow()) {
80 fleet = spawnFleet();
81 if (fleet != null) {
83 MarketAPI source = getSourceMarket();
84 if (source != null) {
86 }
88 if (defeatTrigger != null) {
90 }
91 }
92 }
93 if (fleet == null) {
96 }
97 }
98 }
99 }
100
101
102 public abstract CampaignFleetAPI spawnFleet();
103 public abstract boolean canSpawnFleetNow();
104 public abstract boolean shouldScriptBeRemoved();
105
106 public void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param) {
107 if (fleet == this.fleet) {
108 this.fleet = null;
111 }
112 }
113
115 float currFP = fleet.getFleetPoints();
116 if (currFP < origFP * 0.33f && !Misc.isFleetReturningToDespawn(fleet)) {
118 }
119 }
120
121 public String getPersonId() {
122 return personId;
123 }
124
125 public void setPersonId(String personId) {
126 this.personId = personId;
127 }
128
129 public float getMinRespawnDelayDays() {
130 return minRespawnDelayDays;
131 }
132
134 this.minRespawnDelayDays = minRespawnDelayDays;
135 }
136
137 public float getMaxRespawnDelayDays() {
138 return maxRespawnDelayDays;
139 }
140
142 this.maxRespawnDelayDays = maxRespawnDelayDays;
143 }
144
148
150 this.minFailedSpawnRespawnDelayDays = minFailedSpawnRespawnDelayDays;
151 }
152
156
158 this.maxFailedSpawnRespawnDelayDays = maxFailedSpawnRespawnDelayDays;
159 }
160
161 public float getCurrDelay() {
162 return currDelay;
163 }
164
165 public void setCurrDelay(float currDelay) {
166 this.currDelay = currDelay;
167 }
168
170 return fleet;
171 }
172
174 this.fleet = fleet;
175 }
176
177 public Random getRandom() {
178 return random;
179 }
180
181 public void setRandom(Random random) {
182 this.random = random;
183 }
184
185
186}
187
static SectorAPI getSector()
Definition Global.java:65
void setMaxFailedSpawnRespawnDelayDays(float maxFailedSpawnRespawnDelayDays)
void reportBattleOccurred(CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner, BattleAPI battle)
void setMinFailedSpawnRespawnDelayDays(float minFailedSpawnRespawnDelayDays)
void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param)
static PersonAPI getPerson(String id)
Definition People.java:107
static void giveStandardReturnToSourceAssignments(CampaignFleetAPI fleet)
Definition Misc.java:3836
static void addDefeatTrigger(CampaignFleetAPI fleet, String trigger)
Definition Misc.java:5920
static boolean isFleetReturningToDespawn(CampaignFleetAPI fleet)
Definition Misc.java:3842
void addEventListener(FleetEventListener listener)
void addScript(EveryFrameScript script)
void set(String key, Object value)