1package com.fs.starfarer.api.impl.campaign.enc;
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.Collections;
6import java.util.Comparator;
8import java.util.Random;
10import com.fs.starfarer.api.Global;
11import com.fs.starfarer.api.campaign.JumpPointAPI;
12import com.fs.starfarer.api.campaign.NascentGravityWellAPI;
13import com.fs.starfarer.api.campaign.PlanetAPI;
14import com.fs.starfarer.api.campaign.SectorAPI;
15import com.fs.starfarer.api.campaign.SectorEntityToken;
16import com.fs.starfarer.api.campaign.StarSystemAPI;
17import com.fs.starfarer.api.impl.campaign.ids.Conditions;
18import com.fs.starfarer.api.impl.campaign.ids.Planets;
19import com.fs.starfarer.api.impl.campaign.ids.StarTypes;
20import com.fs.starfarer.api.impl.campaign.ids.Tags;
21import com.fs.starfarer.api.impl.campaign.ids.Terrain;
22import com.fs.starfarer.api.impl.campaign.procgen.AccretionDiskGenPlugin;
23import com.fs.starfarer.api.impl.campaign.procgen.PlanetGenDataSpec;
24import com.fs.starfarer.api.impl.campaign.procgen.StarAge;
25import com.fs.starfarer.api.impl.campaign.procgen.StarGenDataSpec;
26import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
27import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.CustomConstellationParams;
28import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.GenContext;
29import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.GenResult;
30import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.GeneratedPlanet;
31import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.StarSystemType;
32import com.fs.starfarer.api.impl.campaign.procgen.TerrainGenDataSpec;
33import com.fs.starfarer.api.impl.campaign.terrain.HyperspaceAbyssPluginImpl;
34import com.fs.starfarer.api.impl.campaign.terrain.HyperspaceAbyssPluginImpl.AbyssalEPData;
35import com.fs.starfarer.api.impl.campaign.terrain.HyperspaceTerrainPlugin;
36import com.fs.starfarer.api.impl.campaign.terrain.StarCoronaTerrainPlugin;
37import com.fs.starfarer.api.impl.campaign.terrain.StarCoronaTerrainPlugin.CoronaParams;
38import com.fs.starfarer.api.impl.campaign.world.GateHaulerLocation;
39import com.fs.starfarer.api.util.Misc;
40import com.fs.starfarer.api.util.Misc.CatalogEntryType;
41import com.fs.starfarer.api.util.WeightedRandomPicker;
45 public static enum RogueStellarObjectType {
101 AbyssalEPData data = (AbyssalEPData) point.
custom;
109 system.
setType(StarSystemType.DEEP_SPACE);
116 if (data.nearest ==
null) {
121 String failKey =
"$threatSpawnsFailedToRoll";
123 float probBonus = 0f;
127 if (data.random.nextFloat() < prob + probBonus) {
156 if (objectType ==
null)
return;
175 CustomConstellationParams params =
new CustomConstellationParams(age);
177 StarSystemGenerator.random = data.random;
180 gen.
init(system, age);
182 GenContext context =
new GenContext(gen, system, system.
getCenter(), starData,
183 null, 0, age.name(), 0, 1000,
null, -1);
185 context.lagrangeParent =
new GeneratedPlanet(
null,
null,
false, 0, 0, 0);
195 if (objectType == RogueStellarObjectType.BLACK_HOLE) {
212 if (objectType == RogueStellarObjectType.PLANETOID) {
221 GenResult result = gen.
addPlanet(context, planetData,
false,
true);
222 if (result ==
null || result.entities.isEmpty() ||
223 !(result.entities.get(0) instanceof
PlanetAPI))
return;
224 main = (
PlanetAPI) result.entities.get(0);
227 if (main ==
null)
return;
232 boolean multiple = context.generatedPlanets.size() > 1;
233 int index = data.random.nextInt(20);
241 List<PlanetAPI> sorted =
new ArrayList<PlanetAPI>(system.
getPlanets());
242 Collections.sort(sorted,
new Comparator<PlanetAPI>() {
251 CatalogEntryType type = CatalogEntryType.PLANET;
252 if (planet.isGasGiant()) type = CatalogEntryType.GIANT;
253 if (planet.getSpec().isBlackHole()) type = CatalogEntryType.BLACK_HOLE;
255 String firstChar =
null;
257 firstChar =
"" + Character.valueOf((
char) (
'A' + (index % 26)));
262 planet.setName(name);
263 if (planet.getMarket() !=
null) {
264 planet.getMarket().setName(name);
276 if (planet.getSpec().getDescriptionId().equals(
Planets.
BARREN)) {
277 planet.setDescriptionIdOverride(
"barren_deep_space");
283 StarSystemGenerator.random = prev;
301 if (jp.isStarAnchor()) {
305 if (jp.isGasGiantAnchor()) {
307 }
else if (jp.isStarAnchor()) {
327 if (desired > maxSensorRange) {
335 float mult = Math.min(0.5f, 400f / range);
356 if (coronaPlugin !=
null) {
383 if (terrainData !=
null) {
385 context.parent = planet;
386 context.currentRadius = 500f + data.random.nextFloat() * 1000f;
387 diskGen.
generate(terrainData, context);
390 GeneratedPlanet p =
new GeneratedPlanet(
null, planet,
false, 0, 0, 0);
391 context.generatedPlanets.add(p);
static SettingsAPI getSettings()
static SectorAPI getSector()
void modifyFlat(String source, float value)
static float getAbyssalRogueStellarObjectFrequency(EncounterManager manager, EncounterPoint point)
void addSpecials(StarSystemAPI system, EncounterManager manager, EncounterPoint point, AbyssalEPData data)
PlanetAPI addBlackHole(StarSystemAPI system, GenContext context, AbyssalEPData data)
void createEncounter(EncounterManager manager, EncounterPoint point)
static WeightedRandomPicker< String > PLANETOID_TYPES
static float PROB_BLACK_HOLE_ORBITERS
static float MIN_THREAT_PROB
static float MAX_THREAT_PROB_DEPTH
static float MAX_THREAT_PROB
static WeightedRandomPicker< RogueStellarObjectType > STELLAR_OBJECT_TYPES
float getFrequencyForPoint(EncounterManager manager, EncounterPoint point)
static void setAbyssalDetectedRange(SectorEntityToken entity, float range)
static float BONUS_PROB_PER_FAIL
static void setAbyssalDetectedRanges(StarSystemAPI system)
static WeightedRandomPicker< String > BLACK_HOLE_TYPES
static float MIN_DEPTH_FOR_GUARANTEED
static WeightedRandomPicker< String > GAS_GIANT_TYPES
static final String RUINS_WIDESPREAD
static final String RUINS_SCATTERED
static final String RUINS_EXTENSIVE
static final String RUINS_VAST
static final String DECIVILIZED
static final String POLLUTION
static final String DECIVILIZED_SUBPOP
static final String NEBULA_CENTER_OLD
static final String GAS_GIANT
static final String BARREN
static final String ROCKY_ICE
static final String BARREN_BOMBARDED
static final String ROCKY_METALLIC
static final String BARREN2
static final String ICE_GIANT
static final String NEBULA_CENTER_YOUNG
static final String BARREN3
static final String BARREN_CASTIRON
static final String FROZEN
static final String CRYOVOLCANIC
static final String FROZEN2
static final String NEBULA_CENTER_AVERAGE
static final String FROZEN3
static final String FROZEN1
static final String BLACK_HOLE
static final String EVENT_HORIZON
GenResult generate(TerrainGenDataSpec terrainData, GenContext context)
static final String CAT_HAB5
void init(StarSystemAPI system, StarAge age)
static final String CAT_HAB4
static final String CAT_HAB3
GenResult addPlanet(GenContext context, PlanetGenDataSpec planetData, boolean isMoon, boolean addMoons)
static final String CAT_HAB2
static float addOrbitingEntities(StarSystemAPI system, SectorEntityToken parentStar, StarAge age, int min, int max, float startingRadius, int nameOffset, boolean withSpecialNames)
SectorEntityToken getEntity()
static float JUMP_POINT_DETECTED_RANGE
static float NASCENT_WELL_DETECTED_RANGE
static float GAS_GIANT_DETECTED_RANGE
static float STAR_DETECTED_RANGE
static float ABYSS_SENSOR_RANGE_MULT
static Color ABYSS_AMBIENT_LIGHT_COLOR
static String genEntityCatalogId(CatalogEntryType type)
static StarCoronaTerrainPlugin getCoronaFor(PlanetAPI star)
< T > Collection< T > getAllSpecs(Class< T > c)
Object getSpec(Class c, String id, boolean nullOnNotFound)
float getSensorRangeMaxHyper()
SectorEntityToken addTerrain(String terrainId, Object param)
PlanetAPI addPlanet(String id, SectorEntityToken focus, String name, String type, float angle, float radius, float orbitRadius, float orbitDays)
void addScript(EveryFrameScript script)
List< PlanetAPI > getPlanets()
void setName(String name)
void setBackgroundTextureFilename(String backgroundTextureFilename)
void removeEntity(SectorEntityToken entity)
StarSystemAPI createStarSystem(String name)
MemoryAPI getMemoryWithoutUpdate()
StatBonus getDetectedRangeMod()
void setDetectionRangeDetailsOverrideMult(Float detectionRangeDetailsOverrideMult)
void setExtendedDetectedAtRange(Float extendedDetectedAtRange)
void setCircularOrbit(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays)
void setSensorProfile(Float sensorProfile)
void setDiscoverable(Boolean discoverable)
void setLocation(float x, float y)
void setOrbit(OrbitAPI orbit)
SectorEntityToken initNonStarCenter()
List< JumpPointAPI > getAutogeneratedJumpPointsInHyper()
void setOptionalUniqueId(String optionalUniqueId)
void setProcgen(boolean isProcgen)
void setLightColor(Color lightColor)
SectorEntityToken getCenter()
void setCenter(SectorEntityToken center)
void setStar(PlanetAPI star)
List< NascentGravityWellAPI > getAutogeneratedNascentWellsInHyper()
void setType(StarSystemType type)
void autogenerateHyperspaceJumpPoints()
void set(String key, Object value)