1package com.fs.starfarer.api.impl.combat;
5import org.lwjgl.util.vector.Vector2f;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.combat.BeamAPI;
9import com.fs.starfarer.api.combat.BeamEffectPluginWithReset;
10import com.fs.starfarer.api.combat.CombatEngineAPI;
11import com.fs.starfarer.api.combat.CombatEntityAPI;
12import com.fs.starfarer.api.combat.MissileAPI;
13import com.fs.starfarer.api.combat.ShipAPI;
14import com.fs.starfarer.api.combat.WeaponAPI.WeaponType;
15import com.fs.starfarer.api.util.Misc;
29 protected boolean done =
false;
56 numToSpawn = (int) ((range - length) / perSpawn) + 1;
81 rangeToSpawnAt = range;
86 boolean spawnedMine =
false;
87 if (length > rangeToSpawnAt - 10f) {
90 loc.scale(rangeToSpawnAt);
91 Vector2f.add(loc, beam.
getFrom(), loc);
135 boolean computeNextLoc =
false;
138 if (dist < perSpawn) {
140 computeNextLoc =
true;
143 if (!computeNextLoc) {
170 float anglePerSegment = 360f * perSpawn / (3.14f * 2f * targetRadius);
171 if (anglePerSegment > 90f) anglePerSegment = 90f;
172 float angle = prevAngle + anglePerSegment *
spawnDir;
176 arcTo.scale(targetRadius);
177 Vector2f.add(targetLoc, arcTo, arcTo);
182 actualRadius += 30f + 50f * (float) Math.random();
184 actualRadius += 30f + 50f * (float) Math.random();
194 arcTo.scale(actualRadius);
195 Vector2f.add(targetLoc, arcTo, arcTo);
211 (
float) Math.random() * 360f,
null);
212 if (source !=
null) {
214 source, WeaponType.MISSILE,
false, mine.
getDamage());
220 float fadeInTime = 0.05f;
static SettingsAPI getSettings()
static CombatEngineAPI getCombatEngine()
static float DIST_PER_SPAWN
Vector2f getNextArcLoc(CombatEngineAPI engine, BeamAPI beam, float perSpawn)
void advance(float amount, CombatEngineAPI engine, BeamAPI beam)
static float MIN_SPAWN_DIST
void spawnMine(ShipAPI source, Vector2f mineLoc)
static float SPAWN_INTERVAL
static Vector2f getUnitVectorAtDegreeAngle(float degrees)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static float getClosestTurnDirection(float facing, float desired)
static float getAngleInDegrees(Vector2f v)
float getTargetingRadius(Vector2f from, CombatEntityAPI target, boolean considerShield)
CombatEntityAPI getDamageTarget()
Vector2f getRayEndPrevFrame()
float getLengthPrevFrame()
EmpArcEntityAPI spawnEmpArcVisual(Vector2f from, CombatEntityAPI fromAnchor, Vector2f to, CombatEntityAPI toAnchor, float thickness, Color fringe, Color core)
CombatEntityAPI spawnProjectile(ShipAPI ship, WeaponAPI weapon, String weaponId, Vector2f point, float angle, Vector2f shipVelocity)
void applyDamageModifiersToSpawnedProjectileWithNullWeapon(ShipAPI source, WeaponType type, boolean isBeam, DamageAPI damage)
float getCollisionRadius()
void addDamagedAlready(CombatEntityAPI c)
void fadeOutThenIn(float inDur)
void setFlightTime(float flightTime)
boolean isWithinArc(Vector2f point)