Starsector API
Loading...
Searching...
No Matches
PilgrimageFleetAssignmentAI.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.fleets;
2
3import java.util.List;
4
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.CampaignFleetAPI;
7import com.fs.starfarer.api.campaign.SectorEntityToken;
8import com.fs.starfarer.api.campaign.econ.MarketAPI;
9import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
10import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
11import com.fs.starfarer.api.impl.campaign.ids.Factions;
12import com.fs.starfarer.api.impl.campaign.procgen.themes.RouteFleetAssignmentAI;
13import com.fs.starfarer.api.util.IntervalUtil;
14import com.fs.starfarer.api.util.Misc;
15
16public class PilgrimageFleetAssignmentAI extends RouteFleetAssignmentAI {
17
18 public static class PilgrimageRouteData {
19 public boolean smuggling = false;
20 public MarketAPI from;
21 public SectorEntityToken to;
22 public float size;
23 public String factionId;
24 }
25
26
27 private String origFaction;
28 private IntervalUtil factionChangeTracker = new IntervalUtil(0.1f, 0.3f);
29 public PilgrimageFleetAssignmentAI(CampaignFleetAPI fleet, RouteData route) {
30 super(fleet, route);
31 //origFaction = fleet.getFaction().getId();
32 origFaction = route.getFactionId();
33 if (!getData().smuggling) {
34 origFaction = null;
35 factionChangeTracker = null;
36 } else {
37 factionChangeTracker.forceIntervalElapsed();
39 }
40 }
41
42 @Override
43 protected String getStartingActionText(RouteSegment segment) {
44 return "preparing for pilgrimage to shrine on " + getData().to.getName();
45 }
46 @Override
47 protected String getEndingActionText(RouteSegment segment) {
48 return "disembarking pilgrims at " + getData().from.getName();
49 }
50
51 @Override
52 protected String getTravelActionText(RouteSegment segment) {
53 Integer id = segment.getId();
55 return "taking pilgrims to shrine on " + getData().to.getName();
57 return "returning pilgrims to " + getData().from.getName();
58 }
59 return super.getTravelActionText(segment);
60 }
61
62 @Override
63 protected String getInSystemActionText(RouteSegment segment) {
64 Integer id = segment.getId();
65
67 return "disembarking pilgrims at shrine on " + getData().to.getName();
69 return "embarking pilgrims for return voyage to " + getData().from.getName();
70 }
71 return super.getInSystemActionText(segment);
72 }
73
74 protected PilgrimageRouteData getData() {
75 PilgrimageRouteData data = (PilgrimageRouteData) route.getCustom();
76 return data;
77 }
78
79 @Override
80 public void advance(float amount) {
81 super.advance(amount);
83 }
84
85
86 public void doSmugglingFactionChangeCheck(float amount) {
87 PilgrimageRouteData data = getData();
88 if (!data.smuggling) return;
89 float days = Global.getSector().getClock().convertToDays(amount);
90
91// if (fleet.isInCurrentLocation()) {
92// System.out.println("23wefwf23");
93// days *= 100000f;
94// }
95
96 factionChangeTracker.advance(days);
97 if (factionChangeTracker.intervalElapsed() && fleet.getAI() != null) {
98 List<MarketAPI> markets = Misc.getMarketsInLocation(fleet.getContainingLocation());
99 MarketAPI align = null;
100 int max = 0;
101 for (MarketAPI market : markets) {
102 if (market.getFaction().isHostileTo(data.factionId)) {
103 int size = market.getSize();
104 if (size > max) {
105 max = size;
106 align = market;
107 }
108 }
109 }
110
111 if (align == null || fleet.isInHyperspace() ||
112 fleet.getContainingLocation() == data.from.getContainingLocation()) {
113 align = data.from;
114 }
115
116
117 if (align != null) {
118 String targetFac = origFaction;
119 boolean hostile = align.getFaction().isHostileTo(targetFac);
120 if (hostile) {
121 targetFac = Factions.INDEPENDENT;
122 hostile = align.getFaction().isHostileTo(targetFac);
123 }
124 if (hostile) {
125 targetFac = align.getFactionId();
126 }
127 if (!fleet.getFaction().getId().equals(targetFac)) {
128 fleet.setFaction(targetFac, true);
129 }
130 } else {
131 String targetFac = origFaction;
132 if (fleet.isInHyperspace()) {
133 targetFac = Factions.INDEPENDENT;
134 }
135 if (!fleet.getFaction().getId().equals(targetFac)) {
136 fleet.setFaction(targetFac, true);
137 }
138 }
139 }
140 }
141
142}
143
144
145
146
147
148
149
150
151
152
static SectorAPI getSector()
Definition Global.java:59