Starsector API
Loading...
Searching...
No Matches
MiscFleetAssignmentAI.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.fleets.misc;
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.econ.MarketAPI;
8import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
9import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
10import com.fs.starfarer.api.impl.campaign.fleets.misc.MiscFleetRouteManager.MiscRouteData;
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 MiscFleetAssignmentAI extends RouteFleetAssignmentAI {
17
18
19 private String origFaction;
20 private IntervalUtil factionChangeTracker = new IntervalUtil(0.1f, 0.3f);
21 public MiscFleetAssignmentAI(CampaignFleetAPI fleet, RouteData route) {
22 super(fleet, route);
23 //origFaction = fleet.getFaction().getId();
24 origFaction = route.getFactionId();
25 if (!getData().smuggling) {
26 origFaction = null;
27 factionChangeTracker = null;
28 } else {
29 factionChangeTracker.forceIntervalElapsed();
31 }
32 }
33
34 @Override
35 protected String getStartingActionText(RouteSegment segment) {
36 MiscRouteData data = getData();
38 if (creator != null) {
39 return creator.getStartingActionText(fleet, segment, data);
40 }
41 return super.getStartingActionText(segment);
42 }
43 @Override
44 protected String getEndingActionText(RouteSegment segment) {
45 MiscRouteData data = getData();
47 if (creator != null) {
48 return creator.getEndingActionText(fleet, segment, data);
49 }
50 return super.getEndingActionText(segment);
51 }
52
53 @Override
54 protected String getTravelActionText(RouteSegment segment) {
55 Integer id = segment.getId();
56 MiscRouteData data = getData();
58 if (creator != null) {
60 return creator.getTravelToDestActionText(fleet, segment, data);
61 } else if (id == MiscFleetRouteManager.ROUTE_TRAVEL_SRC) {
62 return creator.getTravelReturnActionText(fleet, segment, data);
63 }
64 }
65 return super.getTravelActionText(segment);
66 }
67
68 @Override
69 protected String getInSystemActionText(RouteSegment segment) {
70 Integer id = segment.getId();
71 MiscRouteData data = getData();
73 if (creator != null) {
75 return creator.getAtDestUnloadActionText(fleet, segment, data);
76 } else if (id == MiscFleetRouteManager.ROUTE_DST_LOAD) {
77 return creator.getAtDestLoadActionText(fleet, segment, data);
78 }
79 }
80 return super.getInSystemActionText(segment);
81 }
82
83 protected MiscRouteData getData() {
84 MiscRouteData data = (MiscRouteData) route.getCustom();
85 return data;
86 }
87
88 @Override
89 public void advance(float amount) {
90 super.advance(amount);
92 }
93
94
95 public void doSmugglingFactionChangeCheck(float amount) {
96 MiscRouteData data = getData();
97 if (!data.smuggling) return;
98 float days = Global.getSector().getClock().convertToDays(amount);
99
100// if (fleet.isInCurrentLocation()) {
101// System.out.println("23wefwf23");
102// days *= 100000f;
103// }
104
105 factionChangeTracker.advance(days);
106 if (factionChangeTracker.intervalElapsed() && fleet.getAI() != null) {
107 List<MarketAPI> markets = Misc.getMarketsInLocation(fleet.getContainingLocation());
108 MarketAPI align = null;
109 int max = 0;
110 for (MarketAPI market : markets) {
111 int size = market.getSize();
112 if (market.getFaction().isHostileTo(data.factionId)) {
113 if (size > max) {
114 max = size;
115 align = market;
116 }
117 } else if (size > max) {
118 max = size;
119 align = null;
120 }
121 }
122
123 if (align == null || fleet.isInHyperspace() ||
124 fleet.getContainingLocation() == data.from.getContainingLocation()) {
125 align = data.from;
126 }
127
128
129 if (align != null) {
130 String targetFac = origFaction;
131 boolean hostile = align.getFaction().isHostileTo(targetFac);
132 if (hostile) {
133 targetFac = Factions.INDEPENDENT;
134 hostile = align.getFaction().isHostileTo(targetFac);
135 }
136 if (hostile) {
137 targetFac = align.getFactionId();
138 }
139 if (!fleet.getFaction().getId().equals(targetFac)) {
140 fleet.setFaction(targetFac, true);
141 }
142 } else {
143 String targetFac = origFaction;
144 if (fleet.isInHyperspace()) {
145 targetFac = Factions.INDEPENDENT;
146 }
147 if (!fleet.getFaction().getId().equals(targetFac)) {
148 fleet.setFaction(targetFac, true);
149 }
150 }
151 }
152 }
153
154}
155
156
157
158
159
160
161
162
163
164
static SectorAPI getSector()
Definition Global.java:59
String getTravelToDestActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
String getEndingActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
String getTravelReturnActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
String getStartingActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
String getAtDestLoadActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)
String getAtDestUnloadActionText(CampaignFleetAPI fleet, RouteSegment segment, MiscRouteData data)