1package com.fs.starfarer.api.impl.campaign.missions.hub;
3import java.util.ArrayList;
5import java.util.Random;
7import org.lwjgl.util.vector.Vector2f;
9import com.fs.starfarer.api.EveryFrameScript;
10import com.fs.starfarer.api.Global;
11import com.fs.starfarer.api.campaign.CampaignFleetAPI;
12import com.fs.starfarer.api.campaign.FleetAssignment;
13import com.fs.starfarer.api.campaign.LocationAPI;
14import com.fs.starfarer.api.campaign.SectorEntityToken;
15import com.fs.starfarer.api.campaign.StarSystemAPI;
16import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
17import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin;
18import com.fs.starfarer.api.util.Misc;
19import com.fs.starfarer.api.util.WeightedRandomPicker;
23 protected CampaignFleetAPI
fleet;
26 protected List<SectorEntityToken>
patrolPoints =
new ArrayList<SectorEntityToken>();
41 if (curr ==
null)
continue;
42 if (curr ==
fleet)
continue;
43 this.patrolPoints.add(curr);
62 Vector2f loc = Misc.getPointAtRadius(target.getLocation(), target.getRadius() + 100f);
63 fleet.setLocation(loc.x, loc.y);
65 Vector2f loc = Misc.getPointAtRadius(
new Vector2f(), 5000f);
66 fleet.setLocation(loc.x, loc.y);
76 WeightedRandomPicker<SectorEntityToken> picker =
new WeightedRandomPicker<SectorEntityToken>(random);
78 if (!curr.isAlive())
continue;
90 float speed = Misc.getSpeedForBurnLevel(8);
91 float dist = Misc.getDistance(
fleet.getLocation(),
currTarget.getLocation());
92 float seconds = dist / speed;
93 float days = seconds /
Global.
getSector().getClock().getSecondsPerDay();
94 days += 5f + 5f * (float) Math.random();
97 }
else if (
system instanceof StarSystemAPI) {
98 float days = 5f + 5f * (float) Math.random();
104 if (
fleet.getCurrentAssignment() ==
null) {
108 if (travel ==
null) {
109 if (Misc.isPatrol(
fleet)) {
110 travel =
"patrolling";
112 travel =
"traveling";
115 if (
fleet.getAI() !=
null &&
117 fleet.getCurrentAssignment().getAssignment() == FleetAssignment.PATROL_SYSTEM) {
119 if (dist > 1500 ||
fleet.getContainingLocation() !=
currTarget.getContainingLocation()) {
120 boolean standingDown =
fleet.getAI() instanceof ModularFleetAIAPI &&
121 ((ModularFleetAIAPI)
fleet.getAI()).getTacticalModule() !=
null &&
122 ((ModularFleetAIAPI)
fleet.getAI()).getTacticalModule().isStandingDown();
124 fleet.getAI().setActionTextOverride(
null);
126 fleet.getAI().setActionTextOverride(travel);
129 fleet.getAI().setActionTextOverride(
null);
131 }
else if (
fleet.getAI() !=
null) {
132 fleet.getAI().setActionTextOverride(
null);
155 return mission instanceof IntelInfoPlugin && ((IntelInfoPlugin)
mission).isEnded();
static SectorAPI getSector()
float elapsedWaitingForDespawn
SectorEntityToken pickPatrolPoint()
SectorEntityToken currTarget
void advance(float amount)
List< SectorEntityToken > patrolPoints
void giveInitialAssignments(boolean randomLocation)
TriggerFleetAssignmentAI(String travelText, String patrolText, HubMission mission, LocationAPI system, boolean randomLocation, CampaignFleetAPI fleet, SectorEntityToken ... patrolPoints)