Starsector API
Loading...
Searching...
No Matches
RacerGhostCreator.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.ghosts.types;
2
3import java.util.ArrayList;
4import java.util.List;
5
6import org.lwjgl.util.vector.Vector2f;
7
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.impl.campaign.ghosts.BaseSensorGhostCreator;
11import com.fs.starfarer.api.impl.campaign.ghosts.GhostFrequencies;
12import com.fs.starfarer.api.impl.campaign.ghosts.SensorGhost;
13import com.fs.starfarer.api.impl.campaign.ghosts.SensorGhostManager;
14import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2;
15import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2.SlipstreamSegment;
16
18
19
20 @Override
21 public List<SensorGhost> createGhost(SensorGhostManager manager) {
22 if (!Global.getSector().getCurrentLocation().isHyperspace()) return null;
23 CampaignFleetAPI pf = Global.getSector().getPlayerFleet();
24 Vector2f loc = pf.getLocation();
25
26 //LocationAPI hyper = Global.getSector().getHyperspace();
27 float radius = 1000f;
28 SlipstreamTerrainPlugin2 plugin = pickNearbySlipstream(radius, manager.getRandom());
29 if (plugin == null) return null;
30
31 float [] coords = plugin.getLengthAndWidthFractionWithinStream(loc, 0f, false, radius);
32 if (coords == null) return null;
33
34 SlipstreamSegment start = plugin.getSegmentForDist(coords[0]);
35 if (start == null) return null;
36
37 List<SlipstreamSegment> segments = plugin.getSegments();
38
39 List<SensorGhost> result = new ArrayList<SensorGhost>();
40
41 int num = 1 + manager.getRandom().nextInt(5);
42
43 float distBehind = 1000f;
44 float currDist = 0f;
45 for (int i = start.index - 1; i >= 0f && num > 0; i--) {
46 SlipstreamSegment curr = segments.get(i);
47 currDist += curr.lengthToNext;
48
49 float b = plugin.getFaderBrightness(coords[0]);
50 if (currDist > distBehind && b > 0) {
51 num--;
52
53 RacerGhost g = new RacerGhost(manager, curr, plugin);
54 if (g.isCreationFailed()) continue;
55 result.add(g);
56 distBehind += 500f * manager.getRandom().nextFloat();
57 }
58 }
59 return result;
60 }
61
62
63 @Override
64 public float getFrequency(SensorGhostManager manager) {
65 return GhostFrequencies.getRacerFrequency(manager);
66 //return 10000f;
67 }
68
70 return true;
71 }
72}
static SectorAPI getSector()
Definition Global.java:59
static SlipstreamTerrainPlugin2 pickNearbySlipstream(float radius, Random random)
static float getRacerFrequency(SensorGhostManager manager)
List< SensorGhost > createGhost(SensorGhostManager manager)