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);
42 system.addTag(Tags.THEME_SPECIAL);
43 LocationAPI hyper = Global.getSector().getHyperspace();
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
75 giant.getMarket().addCondition(Conditions.DENSE_ATMOSPHERE);
76 giant.getMarket().addCondition(Conditions.COLD);
77 giant.getMarket().addCondition(Conditions.DARK);
78 giant.getMarket().addCondition(Conditions.VOLATILES_TRACE);
79 giant.getMarket().addCondition(Conditions.HIGH_GRAVITY);
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);
90 AddedEntity added = BaseThemeGenerator.addNonSalvageEntity(system, loc, Entities.STABLE_LOCATION, Factions.NEUTRAL);
91
92
93 for (SectorEntityToken curr : system.getEntitiesWithTag(Tags.STABLE_LOCATION)) {
94 SpecialItemData item = WormholeManager.createWormholeAnchor("charlie", "Charlie");
95 JumpPointAPI wormhole = WormholeManager.get().addWormhole(item, curr, null);
96 wormhole.getMemoryWithoutUpdate().unset(JumpPointInteractionDialogPluginImpl.UNSTABLE_KEY);
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);
108 added = BaseThemeGenerator.addEntity(null, system, loc, Entities.DERELICT_GATEHAULER, Factions.NEUTRAL);
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
123 AbyssalRogueStellarObjectEPEC.setAbyssalDetectedRanges(system);
124 }
125
126}
127
128
129
130
131
132
133
134
135
136
137
138
139
static SettingsAPI getSettings()
Definition Global.java:51
static FactoryAPI getFactory()
Definition Global.java:35
static SectorAPI getSector()
Definition Global.java:59
OrbitAPI createCircularOrbitWithSpin(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays, float spin)
OrbitAPI createCircularOrbit(SectorEntityToken focus, float angle, float orbitRadius, float orbitDays)