Starsector API
Loading...
Searching...
No Matches
GateHaulerLocation.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.world;
2
3import java.awt.Color;
4import java.util.Random;
5
6import org.lwjgl.util.vector.Vector2f;
7
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.JumpPointAPI;
10import com.fs.starfarer.api.campaign.LocationAPI;
11import com.fs.starfarer.api.campaign.PlanetAPI;
12import com.fs.starfarer.api.campaign.SectorAPI;
13import com.fs.starfarer.api.campaign.SectorEntityToken;
14import com.fs.starfarer.api.campaign.SpecialItemData;
15import com.fs.starfarer.api.campaign.StarSystemAPI;
16import com.fs.starfarer.api.impl.campaign.JumpPointInteractionDialogPluginImpl;
17import com.fs.starfarer.api.impl.campaign.enc.AbyssalRogueStellarObjectEPEC;
18import com.fs.starfarer.api.impl.campaign.ids.Conditions;
19import com.fs.starfarer.api.impl.campaign.ids.Entities;
20import com.fs.starfarer.api.impl.campaign.ids.Factions;
21import com.fs.starfarer.api.impl.campaign.ids.Planets;
22import com.fs.starfarer.api.impl.campaign.ids.Tags;
23import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
24import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.StarSystemType;
25import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator;
26import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.AddedEntity;
27import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseThemeGenerator.EntityLocation;
28import com.fs.starfarer.api.impl.campaign.shared.WormholeManager;
29import com.fs.starfarer.api.util.Misc;
30import com.fs.starfarer.api.util.Misc.CatalogEntryType;
31
32public class GateHaulerLocation {
33
34 public static Color ABYSS_AMBIENT_LIGHT_COLOR = new Color(100,100,100,255);
35
36 public void generate(SectorAPI sector) {
37 StarSystemAPI system = sector.createStarSystem("Deep Space");
38 //system.setType(StarSystemType.NEBULA);
39 system.setName("Deep Space"); // to get rid of "Star System" at the end of the name
40 system.setType(StarSystemType.DEEP_SPACE);
41 system.addTag(Tags.THEME_HIDDEN);
44
45
46 system.setBackgroundTextureFilename("graphics/backgrounds/background5.jpg");
47
48 Random random = StarSystemGenerator.random;
49
50 float w = Global.getSettings().getFloat("sectorWidth");
51 float h = Global.getSettings().getFloat("sectorHeight");
52 float angle = 180f + random.nextFloat() * 90f;
53 float systemDist = 4000f + random.nextFloat() * 2000f;
54 Vector2f systemLoc = Misc.getUnitVectorAtDegreeAngle(angle);
55 systemLoc.scale(systemDist);
56 systemLoc.x -= 1000f;
57
58 system.getLocation().set(-w/2f + systemLoc.x, -h/2f + systemLoc.y);
59// system.getLocation().set(-w/2f + 4000f - 0f * random.nextFloat(),
60// -h/2f + 4000f - 0f * random.nextFloat());
61
62
63 SectorEntityToken center = system.initNonStarCenter();
64
65 system.setLightColor(ABYSS_AMBIENT_LIGHT_COLOR); // light color in entire system, affects all entities
66 center.addTag(Tags.AMBIENT_LS);
67
68 String name = Misc.genEntityCatalogId(3125, 6, 11, CatalogEntryType.GIANT);
69
70 PlanetAPI giant = system.addPlanet("nameless_ice_giant", null, name, Planets.ICE_GIANT, 0, 450, 0, 0);
71
72 //rock.setCustomDescriptionId("???");
73 giant.getMemoryWithoutUpdate().set("$gateHaulerIceGiant", true);
74
80
81 giant.setOrbit(null);
82 giant.setLocation(0, 0);
83
84 //StarSystemGenerator.addStableLocations(system, 1);
85 EntityLocation loc = new EntityLocation();
86 float orbitRadius = 7000f;
87 float orbitDays = orbitRadius / (20f + 5f * StarSystemGenerator.random.nextFloat());
88 loc.orbit = Global.getFactory().createCircularOrbit(giant,
89 StarSystemGenerator.random.nextFloat() * 360f, orbitRadius, orbitDays);
91
92
94 SpecialItemData item = WormholeManager.createWormholeAnchor("charlie", "Charlie");
95 JumpPointAPI wormhole = WormholeManager.get().addWormhole(item, curr, null);
97 break;
98 }
99
100
101
102 orbitRadius = giant.getRadius() + 250f;
103 orbitDays = orbitRadius / (20f + random.nextFloat() * 5f);
104 float spin = 3f;
105 loc = new EntityLocation();
106 loc.orbit = Global.getFactory().createCircularOrbitWithSpin(giant, random.nextFloat() * 360f,
107 orbitRadius, orbitDays, spin);
109 added.entity.getMemoryWithoutUpdate().set("$gateHauler", true);
110
111// CampaignFleetAPI visual = Global.getFactory().createEmptyFleet(Factions.NEUTRAL, added.entity.getName(), true);
112// visual.getFleetData().addFleetMember("derelict_gatehauler_Hull");
113// visual.setHidden(true);
114// visual.setVelocity(300f, 0f);
115// visual.setFacing(0f);
116// visual.setMoveDestination(10000f, 0f);
117// ((CustomCampaignEntityAPI)added.entity).setFleetForVisual(visual);
118
119
120 system.autogenerateHyperspaceJumpPoints(true, false);
121
122
124 }
125
126}
127
128
129
130
131
132
133
134
135
136
137
138
139
static SettingsAPI getSettings()
Definition Global.java:57
static FactoryAPI getFactory()
Definition Global.java:41
static SectorAPI getSector()
Definition Global.java:65
static AddedEntity addEntity(Random random, StarSystemAPI system, WeightedRandomPicker< EntityLocation > locs, String type, String faction)
static AddedEntity addNonSalvageEntity(LocationAPI system, EntityLocation loc, String type, String faction)
JumpPointAPI addWormhole(SpecialItemData item, SectorEntityToken stableLocation, InteractionDialogAPI dialog)
static SpecialItemData createWormholeAnchor(String id, String name)
static Vector2f getUnitVectorAtDegreeAngle(float degrees)
Definition Misc.java:1196
static String genEntityCatalogId(CatalogEntryType type)
Definition Misc.java:6736
OrbitAPI createCircularOrbitWithSpin(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays, float spin)
OrbitAPI createCircularOrbit(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays)
PlanetAPI addPlanet(String id, SectorEntityToken focus, String name, String type, float angle, float radius, float orbitRadius, float orbitDays)
List< SectorEntityToken > getEntitiesWithTag(String tag)
void setBackgroundTextureFilename(String backgroundTextureFilename)
StarSystemAPI createStarSystem(String name)
void set(String key, Object value)