1package com.fs.starfarer.api.impl.campaign.intel.raid;
3import java.util.ArrayList;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.SectorEntityToken;
9import com.fs.starfarer.api.impl.campaign.DebugFlags;
10import com.fs.starfarer.api.impl.campaign.fleets.RouteLocationCalculator;
11import com.fs.starfarer.api.impl.campaign.fleets.RouteManager;
12import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
13import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
14import com.fs.starfarer.api.impl.campaign.intel.raid.RaidIntel.RaidStage;
15import com.fs.starfarer.api.impl.campaign.intel.raid.RaidIntel.RaidStageStatus;
16import com.fs.starfarer.api.ui.TooltipMakerAPI;
17import com.fs.starfarer.api.util.IntervalUtil;
18import com.fs.starfarer.api.util.Misc;
22 public static final String
STRAGGLER =
"raid_straggler";
27 protected RaidStageStatus
status = RaidStageStatus.ONGOING;
54 for (RouteData route : routes) {
64 route.getSegments().clear();
65 route.setCurrent(
null);
70 List<RouteData> result =
new ArrayList<RouteData>();
71 for (RouteData route : routes) {
72 if (!
STRAGGLER.equals(route.getCustom())) {
80 for (RouteData route : stragglers) {
91 float orbitDays = 1f + 1f * (float) Math.random();
93 route.addSegment(
new RouteSegment(orbitDays, route.getMarket().getPrimaryEntity()));
120 protected boolean enoughMadeIt(List<RouteData> routes, List<RouteData> stragglers) {
122 for (RouteData route : routes) {
123 if (stragglers.contains(route))
continue;
131 madeItFP += route.getExtra().fp;
143 List<RouteData> stragglers =
new ArrayList<RouteData>();
149 status = RaidStageStatus.FAILURE;
150 if (giveReturnOrders) {
162 float maxRange = 2000f;
163 if (!requireNearTarget) {
164 maxRange = 10000000f;
166 List<RouteData> stragglers =
getStragglers(routes, dest, maxRange);
171 status = RaidStageStatus.SUCCESS;
177 status = RaidStageStatus.SUCCESS;
178 if (giveReturnOrders) {
182 status = RaidStageStatus.FAILURE;
183 if (giveReturnOrders) {
196 List<RouteData> stragglers =
new ArrayList<RouteData>();
198 for (RouteData route : routes) {
203 if (dist > maxRange) {
204 stragglers.add(route);
207 stragglers.add(route);
209 }
else if (!route.isExpired()) {
210 boolean waiting =
false;
215 stragglers.add(route);
static SectorAPI getSector()
static boolean RAID_DEBUG
static boolean FAST_RAIDS
static float getTravelDays(SectorEntityToken from, SectorEntityToken to)
List< RouteData > getRoutesForSource(String source)
static RouteManager getInstance()
static final String WAIT_STAGE
static final String STRAGGLER
void giveReturnOrdersToStragglers(List< RouteData > stragglers)
RaidStageStatus getStatus()
void updateStatusBasedOnReaching(SectorEntityToken dest, boolean giveReturnOrders, boolean requireNearTarget)
boolean enoughMadeIt(List< RouteData > routes, List< RouteData > stragglers)
List< RouteData > getStragglers(List< RouteData > routes, SectorEntityToken dest, float maxRange)
void resetRoute(RouteData route)
List< RouteData > getRoutes()
IntervalUtil statusInterval
void updateStatusBasedOnReaching(SectorEntityToken dest, boolean giveReturnOrders)
void advance(float amount)
void abortIfNeededBasedOnFP(boolean giveReturnOrders)
void setAbortFP(float abortFP)
void showStageInfo(TooltipMakerAPI info)
BaseRaidStage(RaidIntel raid)
String getRouteSourceId()
void advance(float amount)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static float getDays(float amount)
static float getSpawnFPMult(CampaignFleetAPI fleet)
LocationAPI getContainingLocation()
SectorEntityToken createToken(float x, float y)
LocationAPI getHyperspace()
LocationAPI getContainingLocation()
SectorEntityToken getPrimaryEntity()