Starsector API
Loading...
Searching...
No Matches
ZigLeashAssignmentAI.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.world;
2
3import java.awt.Color;
4
5import org.lwjgl.util.vector.Vector2f;
6
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.FleetAssignment;
9import com.fs.starfarer.api.campaign.SectorEntityToken;
10import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI;
11import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
12import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI;
13import com.fs.starfarer.api.util.IntervalUtil;
14import com.fs.starfarer.api.util.Misc;
15
17
18 protected float elapsed = 0f;
19 protected float dur = 30f + (float) Math.random() * 20f;
21
22 protected IntervalUtil moteSpawn = new IntervalUtil(0.01f, 0.1f);
23
25 super();
26 this.fleet = fleet;
27 this.toGuard = toGuard;
28
30 }
31
32 @Override
33 protected void giveInitialAssignments() {
34 pickNext();
35 }
36
37 @Override
41
42 @Override
43 public void advance(float amount) {
44 super.advance(amount);
45
46// if (fleet.getCurrentAssignment() == null || fleet.getCurrentAssignment().getAssignment() != FleetAssignment.HOLD) {
47// fleet.addAssignmentAtStart(FleetAssignment.HOLD, null, 1000f, null);
48// }
49
50 if (toGuard != null) {
52 if (dist > toGuard.getRadius() + fleet.getRadius() + 1500 &&
56 if (ai instanceof ModularFleetAIAPI) {
57 // needed to interrupt an in-progress pursuit
61 }
62 }
63 }
64
65 float days = Misc.getDays(amount);
66 moteSpawn.advance(days * 1f);
67 if (moteSpawn.intervalElapsed()) {
69 }
70 }
71
72
73 public static void spawnMote(SectorEntityToken from) {
74 if (!from.isInCurrentLocation()) return;
75
76 float dur = 1f + 2f * (float) Math.random();
77 dur *= 2f;
78 float size = 3f + (float) Math.random() * 5f;
79 size *= 3f;
80 Color color = new Color(255,100,255,175);
81
82 Vector2f loc = Misc.getPointWithinRadius(from.getLocation(), from.getRadius());
83 Vector2f vel = Misc.getUnitVectorAtDegreeAngle((float) Math.random() * 360f);
84 vel.scale(5f + (float) Math.random() * 10f);
85 Vector2f.add(vel, from.getVelocity(), vel);
86 Misc.addGlowyParticle(from.getContainingLocation(), loc, vel, size, 0.5f, dur, color);
87 }
88}
89
90
91
92
93
94
95
96
97
98
99
100
ZigLeashAssignmentAI(CampaignFleetAPI fleet, SectorEntityToken toGuard)
static Vector2f getUnitVectorAtDegreeAngle(float degrees)
Definition Misc.java:1196
static float getDistance(SectorEntityToken from, SectorEntityToken to)
Definition Misc.java:599
static float getDays(float amount)
Definition Misc.java:4663
static Vector2f getPointWithinRadius(Vector2f from, float r)
Definition Misc.java:711
static ParticleControllerAPI[] addGlowyParticle(LocationAPI location, Vector2f loc, Vector2f vel, float size, float rampUp, float dur, Color color)
Definition Misc.java:4999
void addAssignment(FleetAssignment assignment, SectorEntityToken target, float maxDurationInDays)
void addAssignmentAtStart(FleetAssignment assignment, SectorEntityToken target, float maxDurationInDays, String actionText, Script onCompletion)
TimeoutTracker< SectorEntityToken > getDoNotAttack()