1package com.fs.starfarer.api.impl.campaign.intel.group;
4import java.util.ArrayList;
5import java.util.Collections;
6import java.util.Comparator;
9import org.lwjgl.util.vector.Vector2f;
11import com.fs.starfarer.api.Global;
12import com.fs.starfarer.api.campaign.CampaignFleetAPI;
13import com.fs.starfarer.api.campaign.JumpPointAPI;
14import com.fs.starfarer.api.campaign.SectorEntityToken;
15import com.fs.starfarer.api.campaign.StarSystemAPI;
16import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.ActionType;
17import com.fs.starfarer.api.campaign.econ.MarketAPI;
18import com.fs.starfarer.api.impl.campaign.MilitaryResponseScript;
19import com.fs.starfarer.api.impl.campaign.MilitaryResponseScript.MilitaryResponseParams;
20import com.fs.starfarer.api.impl.campaign.command.WarSimScript;
21import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData;
22import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment;
23import com.fs.starfarer.api.impl.campaign.ids.Factions;
24import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
25import com.fs.starfarer.api.impl.campaign.ids.Tags;
26import com.fs.starfarer.api.impl.campaign.intel.group.GenericRaidFGI.GenericPayloadAction;
27import com.fs.starfarer.api.util.IntervalUtil;
28import com.fs.starfarer.api.util.Misc;
32 public static class FGBlockadeParams {
35 public boolean doNotGetSidetracked =
true;
37 public float accessibilityPenalty = 0.6f;
39 public String patrolText =
null;
47 protected List<SectorEntityToken>
blockadePoints =
new ArrayList<SectorEntityToken>();
52 protected List<MilitaryResponseScript>
scripts =
new ArrayList<MilitaryResponseScript>();
72 final Vector2f center =
new Vector2f();
74 Collections.sort(
blockadePoints,
new Comparator<SectorEntityToken>() {
78 return (
int) Math.signum(d1 - d2);
108 route.addSegment(segment);
113 super.notifyFleetsSpawnedMidSegment(segment);
118 super.notifySegmentFinished(segment);
148 super.directFleets(amount);
152 if (fleets.isEmpty()) {
170 if (!
interval.intervalElapsed())
return;
213 float rf = fNonPrimary;
214 if (target ==
primary) rf = fPrimary;
215 MilitaryResponseParams aggroParams =
new MilitaryResponseParams(ActionType.HOSTILE,
216 "blockade_" + target.getId(),
221 aggroParams.travelText =
null;
222 aggroParams.actionText =
params.patrolText;
static SectorAPI getSector()
static void removeNoFightingTimeoutForObjective(SectorEntityToken objective, FactionAPI faction)
static void setNoFightingForObjective(SectorEntityToken objective, FactionAPI faction, float timeout)
static final String PLAYER
static final String FLEET_BUSY
boolean isActionFinished()
List< MilitaryResponseScript > scripts
void directFleets(float amount)
List< SectorEntityToken > blockadePoints
FGBlockadeAction(FGBlockadeParams params, float duration)
void setActionFinished(boolean finished)
float getSuccessFraction()
List< SectorEntityToken > getBlockadePoints()
SectorEntityToken getPrimary()
void notifyFleetsSpawnedMidSegment(RouteSegment segment)
void notifySegmentFinished(RouteSegment segment)
FGBlockadeParams getParams()
Color getSystemNameHighlightColor()
void orderFleetMovements()
void addRouteSegment(RouteData route)
SectorEntityToken primary
List< CampaignFleetAPI > getFleets()
void forceIntervalElapsed()
void advance(float amount)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static boolean setFlagWithReason(MemoryAPI memory, String flagKey, String reason, boolean value, float expire)
float convertToDays(float realSeconds)
List getEntities(Class implementedClassOrInterface)
List< SectorEntityToken > getEntitiesWithTag(String tag)
void addScript(EveryFrameScript script)
CampaignClockAPI getClock()
FactionAPI getFaction(String factionId)
SectorEntityToken getCenter()