1package com.fs.starfarer.api.impl.campaign.ghosts;
4import java.util.Random;
6import org.lwjgl.util.vector.Vector2f;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.CampaignTerrainAPI;
11import com.fs.starfarer.api.campaign.LocationAPI;
12import com.fs.starfarer.api.impl.campaign.terrain.HyperspaceTerrainPlugin;
13import com.fs.starfarer.api.impl.campaign.velfield.SlipstreamTerrainPlugin2;
14import com.fs.starfarer.api.util.Misc;
15import com.fs.starfarer.api.util.WeightedRandomPicker;
28 return getClass().getSimpleName();
32 return 10f + manager.
getRandom().nextFloat() * 10f;
36 public static Vector2f
findClearHyperspaceArea(Vector2f from,
float minRange,
float maxRange,
float radius, Random random) {
39 public static Vector2f
findDeepHyperspaceArea(Vector2f from,
float minRange,
float maxRange,
float radius, Random random) {
42 public static Vector2f
findHyperspaceArea(Vector2f from,
float minRange,
float maxRange,
float radius, Random random,
boolean clear,
float noSlipstreamRange) {
46 if (terrain ==
null)
return null;
52 int areaSize = (int) Math.ceil(radius / perTile);
58 float total = (areaSize + areaSize + 1) * (areaSize + areaSize + 1);
59 if (total < 1f) total = 1f;
60 for (
int k = 0; k < 20; k++) {
62 int [] coords = plugin.
getTile(test);
63 if (coords ==
null)
continue;
65 if (noSlipstreamRange > 0) {
70 for (
int i = coords[0] - areaSize; i <= coords[0] + areaSize; i++) {
72 if (i >= tiles.length)
continue;
73 for (
int j = coords[1] - areaSize; j < coords[1] + areaSize; j++) {
75 if (j >= tiles[0].length)
continue;
77 int texIndex = tiles[i][j];
89 float score = count / total;
90 if (score >= 0.75f && score > bestScore) {
115 picker.
add(plugin, w);
119 return picker.
pick();
static SectorAPI getSector()
float getFrequency(SensorGhostManager manager)
boolean canSpawnWhilePlayerOutsideAbyss()
static Vector2f findClearHyperspaceArea(Vector2f from, float minRange, float maxRange, float radius, Random random)
boolean canSpawnWhilePlayerInAbyss()
boolean canSpawnWhilePlayerInOrNearSlipstream()
List< SensorGhost > createGhost(SensorGhostManager manager)
float getTimeoutDaysOnSuccessfulCreate(SensorGhostManager manager)
static Vector2f findHyperspaceArea(Vector2f from, float minRange, float maxRange, float radius, Random random, boolean clear, float noSlipstreamRange)
static SlipstreamTerrainPlugin2 pickNearbySlipstream(float radius, LocationAPI location, Random random)
static SlipstreamTerrainPlugin2 pickNearbySlipstream(float radius, Random random)
static Vector2f findDeepHyperspaceArea(Vector2f from, float minRange, float maxRange, float radius, Random random)
boolean isPreventedFromAffecting(SectorEntityToken other)
int[] getTile(Vector2f test)
boolean containsPoint(Vector2f point, float radius)
static boolean isInsideSlipstream(Vector2f loc, float radius)
static CampaignTerrainAPI getHyperspaceTerrain()
static Vector2f getPointWithinRadiusUniform(Vector2f from, float r, Random random)
CampaignTerrainPlugin getPlugin()
List< CampaignTerrainAPI > getTerrainCopy()
CampaignFleetAPI getPlayerFleet()
LocationAPI getHyperspace()