1package com.fs.starfarer.api.impl.campaign.procgen.themes;
3import java.util.ArrayList;
5import java.util.Random;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.CampaignEventListener.FleetDespawnReason;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.LocationAPI;
11import com.fs.starfarer.api.campaign.SectorEntityToken;
12import com.fs.starfarer.api.campaign.StarSystemAPI;
13import com.fs.starfarer.api.impl.campaign.enc.EncounterManager;
14import com.fs.starfarer.api.impl.campaign.enc.EncounterPoint;
15import com.fs.starfarer.api.impl.campaign.enc.EncounterPointProvider;
16import com.fs.starfarer.api.impl.campaign.fleets.FleetFactoryV3;
17import com.fs.starfarer.api.impl.campaign.fleets.FleetParamsV3;
18import com.fs.starfarer.api.impl.campaign.fleets.SourceBasedFleetManager;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
26 if (!where.isHyperspace())
return null;
28 String
id =
"ep_" + source.getId();
29 EncounterPoint ep =
new EncounterPoint(
id, where, source.getLocationInHyperspace(), EncounterManager.EP_TYPE_OUTSIDE_SYSTEM);
31 List<EncounterPoint> result =
new ArrayList<EncounterPoint>();
46 super(source, thresholdLY, minFleets, maxFleets, respawnDelay);
76 super.advance(amount);
82 if (source ==
null)
return null;
84 Random random =
new Random();
91 combatPoints += bonus;
93 String type = FleetTypes.PATROL_SMALL;
94 if (combatPoints > 8) type = FleetTypes.PATROL_MEDIUM;
95 if (combatPoints > 16) type = FleetTypes.PATROL_LARGE;
99 FleetParamsV3 params =
new FleetParamsV3(
101 source.getLocationInHyperspace(),
114 params.random = random;
116 CampaignFleetAPI fleet = FleetFactoryV3.createFleet(params);
117 if (fleet ==
null)
return null;;
120 LocationAPI location = source.getContainingLocation();
121 location.addEntity(fleet);
125 fleet.setLocation(source.getLocation().x, source.getLocation().y);
126 fleet.setFacing(random.nextFloat() * 360f);
128 fleet.addScript(
new RemnantAssignmentAI(fleet, (StarSystemAPI) source.getContainingLocation(), source));
129 fleet.getMemoryWithoutUpdate().set(
"$sourceId", source.getId());
137 super.reportFleetDespawnedToListener(fleet, reason, param);
138 if (reason == FleetDespawnReason.DESTROYED_BY_BATTLE) {
139 String sid = fleet.getMemoryWithoutUpdate().getString(
"$sourceId");
140 if (sid !=
null && source !=
null && sid.equals(source.getId())) {
static SectorAPI getSector()
static void initRemnantFleetProperties(Random random, CampaignFleetAPI fleet, boolean dormant)
List< EncounterPoint > generateEncounterPoints(LocationAPI where)
void reportFleetDespawnedToListener(CampaignFleetAPI fleet, FleetDespawnReason reason, Object param)
transient RemnantSystemEPGenerator epGen
transient boolean addedListener
void advance(float amount)
CampaignFleetAPI spawnFleet()
RemnantStationFleetManager(SectorEntityToken source, float thresholdLY, int minFleets, int maxFleets, float respawnDelay, int minPts, int maxPts)