Starsector API
Loading...
Searching...
No Matches
RacerGhost.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.ghosts.types;
2
3import java.util.Random;
4
5import org.lwjgl.util.vector.Vector2f;
6
7import com.fs.starfarer.api.impl.campaign.ghosts.BaseSensorGhost;
8import com.fs.starfarer.api.impl.campaign.ghosts.GBFollowStream;
9import com.fs.starfarer.api.impl.campaign.ghosts.GBGoInDirection;
10import com.fs.starfarer.api.impl.campaign.ghosts.SensorGhostManager;
11import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2;
12import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2.SlipstreamSegment;
13import com.fs.starfarer.api.util.Misc;
14
15public class RacerGhost extends BaseSensorGhost {
16
17 public RacerGhost(SensorGhostManager manager, SlipstreamSegment segment, SlipstreamTerrainPlugin2 plugin) {
18 super(manager, 20);
19
21 setDespawnRange(-entity.getRadius() * 0.5f);
22
23 Random random = manager.getRandom();
24 float offset = (random.nextBoolean() ? 1f : -1f) * random.nextFloat() * 0.5f;
25
26 Vector2f loc = plugin.getPointAt(segment.totalLength, offset);
27 if (loc == null) {
29 return;
30 }
31 setLoc(loc);
32
33 float intensity = plugin.getIntensity(offset);
34 float wMult = plugin.getWidthBasedSpeedMult(segment.totalLength);
35 float b = plugin.getFaderBrightness(segment.totalLength);
36 float speedMult = intensity * wMult * b;
37
38 float speed = Misc.getSpeedForBurnLevel(plugin.getParams().burnLevel);
39 Vector2f vel = new Vector2f(segment.dir);
40 vel.scale(speed * speedMult);
41 setVel(vel);
42
43 int burn = 17 + random.nextInt(15);
44
45 float dur = 5f + 3f * random.nextFloat();
46 addBehavior(new GBFollowStream(dur, burn, plugin));
47 addBehavior(new GBGoInDirection(dur * 0.5f, random.nextFloat() * 360f, burn));
48 }
49}
50
51
52
53
54
RacerGhost(SensorGhostManager manager, SlipstreamSegment segment, SlipstreamTerrainPlugin2 plugin)