Starsector API
Loading...
Searching...
No Matches
TravelStage.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.intel.raid;
2
3import java.awt.Color;
4import java.util.List;
5
6import com.fs.starfarer.api.campaign.SectorEntityToken;
7import com.fs.starfarer.api.impl.campaign.DebugFlags;
8import com.fs.starfarer.api.impl.campaign.fleets.RouteLocationCalculator;
9import com.fs.starfarer.api.impl.campaign.fleets.RouteManager;
10import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
11import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
12import com.fs.starfarer.api.impl.campaign.intel.inspection.HITravelStage;
13import com.fs.starfarer.api.impl.campaign.intel.punitive.PETravelStage;
14import com.fs.starfarer.api.impl.campaign.intel.raid.RaidIntel.RaidStageStatus;
15import com.fs.starfarer.api.ui.TooltipMakerAPI;
16import com.fs.starfarer.api.util.Misc;
17
18public class TravelStage extends BaseRaidStage {
19
20 protected SectorEntityToken from;
21 protected SectorEntityToken to;
22 protected boolean requireNearTarget;
23
24
25 public TravelStage(RaidIntel raid, SectorEntityToken from, SectorEntityToken to, boolean requireNearTarget) {
26 super(raid);
27 this.from = from;
28 this.to = to;
29 this.requireNearTarget = requireNearTarget;
30 }
31
32 @Override
33 public void notifyStarted() {
35 }
36
37
38 protected void updateRoutes() {
40
41 List<RouteData> routes = RouteManager.getInstance().getRoutesForSource(intel.getRouteSourceId());
42 for (RouteData route : routes) {
43 float travelDays = RouteLocationCalculator.getTravelDays(from, to);
45 (this instanceof PETravelStage && DebugFlags.PUNITIVE_EXPEDITION_DEBUG) ||
46 (this instanceof HITravelStage && DebugFlags.HEGEMONY_INSPECTION_DEBUG)
47 ) {
48 travelDays *= 0.1f;
49 }
50
51 route.addSegment(new RouteSegment(travelDays, from, to));
52 route.addSegment(new RouteSegment(1000f, to, AssembleStage.WAIT_STAGE));
53
54 maxDays = Math.max(maxDays, travelDays);
55 }
56 }
57
62
63 public void showStageInfo(TooltipMakerAPI info) {
64 int curr = intel.getCurrentStage();
65 int index = intel.getStageIndex(this);
66
67 Color h = Misc.getHighlightColor();
68 Color g = Misc.getGrayColor();
69 Color tc = Misc.getTextColor();
70 float pad = 3f;
71 float opad = 10f;
72
73 if (status == RaidStageStatus.FAILURE) {
74 info.addPara("The raiding forces have failed to successfully reach the " +
75 intel.getSystem().getNameWithLowercaseType() + ". The raid is now over.", opad);
76 } else if (curr == index) {
77 info.addPara("The raiding forces are currently travelling to the " +
78 intel.getSystem().getNameWithLowercaseType() + ".", opad);
79 }
80 }
81}
82
83
84
void updateStatusBasedOnReaching(SectorEntityToken dest, boolean giveReturnOrders)
TravelStage(RaidIntel raid, SectorEntityToken from, SectorEntityToken to, boolean requireNearTarget)