1package com.fs.starfarer.api.impl.campaign.world;
3import java.util.LinkedHashMap;
4import java.util.Random;
6import org.lwjgl.util.vector.Vector2f;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CustomCampaignEntityAPI;
10import com.fs.starfarer.api.campaign.PlanetAPI;
11import com.fs.starfarer.api.campaign.SectorAPI;
12import com.fs.starfarer.api.campaign.SectorEntityToken;
13import com.fs.starfarer.api.campaign.StarSystemAPI;
14import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin;
15import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin.DerelictShipData;
16import com.fs.starfarer.api.impl.campaign.enc.AbyssalRogueStellarObjectEPEC;
17import com.fs.starfarer.api.impl.campaign.ids.Conditions;
18import com.fs.starfarer.api.impl.campaign.ids.Entities;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.impl.campaign.ids.Planets;
21import com.fs.starfarer.api.impl.campaign.ids.Tags;
22import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
23import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.StarSystemType;
24import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator;
25import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.AddedEntity;
26import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.EntityLocation;
27import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.LocationType;
28import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.PerShipData;
29import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.ShipCondition;
30import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.ShipRecoverySpecialData;
31import com.fs.starfarer.api.util.Misc;
32import com.fs.starfarer.api.util.WeightedRandomPicker;
45 system.
setType(StarSystemType.DEEP_SPACE);
58 Vector2f systemLoc =
new Vector2f();
59 float outsideMapPad = 2500f;
60 float outsideMapRand = 2500f;
61 float r = random.nextFloat();
64 systemLoc.x = -w/2f - outsideMapPad - outsideMapRand * random.nextFloat();
66 systemLoc.y = -h/2f + (h + outsideMapPad * 1f) * random.nextFloat();
68 systemLoc.x = -w/2f + (w + outsideMapPad * 1f) * random.nextFloat();
69 systemLoc.y = -h/2f - outsideMapPad - outsideMapRand * random.nextFloat();
90 String name =
"Nameless Rock";
118 PerShipData ship =
new PerShipData(
"onslaught_mk1_Ancient", ShipCondition.WRECKED, 0f);
119 ship.shipName =
"Serial #2F38CB017";
120 DerelictShipData params =
new DerelictShipData(ship,
false);
130 float orbitRadius = rock.
getRadius() + 200f;
131 float orbitDays = orbitRadius / (10f + random.nextFloat() * 5f);
132 entity.
setCircularOrbit(rock, random.nextFloat() * 360f, orbitRadius, orbitDays);
134 ShipRecoverySpecialData data =
new ShipRecoverySpecialData(
null);
135 data.notNowOptionExits =
true;
136 data.noDescriptionText =
true;
138 PerShipData copy = (PerShipData) dsep.
getData().ship.clone();
140 copy.variantId =
null;
143 copy.nameAlwaysKnown =
true;
145 copy.pruneWeapons =
false;
163 float minDist = Float.MAX_VALUE;
166 if (curr == rockSystem)
continue;
168 if (curr.getType() == StarSystemType.DEEP_SPACE)
continue;
170 if (dist < minDist) {
176 if (closest ==
null)
return;
186 if (sensor ==
null) {
187 LinkedHashMap<LocationType, Float> weights =
new LinkedHashMap<LocationType, Float>();
188 weights.put(LocationType.STAR_ORBIT, 10f);
189 weights.put(LocationType.OUTER_SYSTEM, 10f);
191 EntityLocation loc = locs.
pick();
195 sensor = added.entity;
201 if (sensor ==
null)
return;
static SettingsAPI getSettings()
static SectorAPI getSector()
DerelictShipData getData()
static void setAbyssalDetectedRanges(StarSystemAPI system)
static final String ORE_RICH
static final String NO_ATMOSPHERE
static final String VERY_COLD
static final String RARE_ORE_MODERATE
static final String WRECK
static final String SENSOR_ARRAY
static final String NEUTRAL
static final String BARREN
static WeightedRandomPicker< EntityLocation > getLocations(Random random, StarSystemAPI system, float minGap, LinkedHashMap< LocationType, Float > weights)
static SectorEntityToken addSalvageEntity(LocationAPI location, String id, String faction)
static AddedEntity addNonSalvageEntity(LocationAPI system, EntityLocation loc, String type, String faction)
static Color ABYSS_AMBIENT_LIGHT_COLOR
void generate(SectorAPI sector)
void createSensorArrayInClosestSystem(StarSystemAPI rockSystem)
void addOnslaughtMkI(PlanetAPI rock)
static String ONESLAUGHT_SENSOR_ARRAY
static String NAMELESS_ROCK_LOCATION_ID
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static void setSalvageSpecial(SectorEntityToken entity, Object data)
static float getAbyssalDepth(Vector2f loc)
ShipVariantAPI getVariant(String variantId)
float getFloat(String key)
PlanetAPI addPlanet(String id, SectorEntityToken focus, String name, String type, float angle, float radius, float orbitRadius, float orbitDays)
List< SectorEntityToken > getEntitiesWithTag(String tag)
void setName(String name)
void setBackgroundTextureFilename(String backgroundTextureFilename)
void setDescriptionIdOverride(String descriptionIdOverride)
Map< String, Object > getPersistentData()
List< StarSystemAPI > getStarSystems()
StarSystemAPI createStarSystem(String name)
LocationAPI getContainingLocation()
CustomCampaignEntityPlugin getCustomPlugin()
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)
MemoryAPI getMemoryWithoutUpdate()
SectorEntityToken initNonStarCenter()
void setOptionalUniqueId(String optionalUniqueId)
void setLightColor(Color lightColor)
void setType(StarSystemType type)
void autogenerateHyperspaceJumpPoints()
String addCondition(String id)
void set(String key, Object value)