1package com.fs.starfarer.api.impl.campaign.terrain;
3import java.util.EnumSet;
5import org.json.JSONArray;
6import org.json.JSONException;
7import org.json.JSONObject;
8import org.lwjgl.util.vector.Vector2f;
10import com.fs.starfarer.api.Global;
11import com.fs.starfarer.api.campaign.CampaignEngineLayers;
12import com.fs.starfarer.api.campaign.CampaignFleetAPI;
13import com.fs.starfarer.api.campaign.SectorEntityToken;
14import com.fs.starfarer.api.combat.ViewportAPI;
15import com.fs.starfarer.api.util.Misc;
19 public static class RadioChatterParams
extends RingParams {
20 public RadioChatterParams(
float bandWidthInEngine,
float middleRadius,
SectorEntityToken relatedEntity) {
21 super(bandWidthInEngine, middleRadius, relatedEntity);
30 this.params = (RadioChatterParams) param;
40 Object writeReplace() {
44 transient private EnumSet<CampaignEngineLayers> layers = EnumSet.noneOf(
CampaignEngineLayers.class);
55 protected transient float phase = 0f;
57 super.advance(amount);
59 float period = (float)Math.PI * 2f;
60 phase += period/10f * amount;
67 float volumeMult = prox;
68 float suppressionMult = prox;
69 if (volumeMult <= 0)
return;
70 volumeMult = (float) Math.sqrt(volumeMult);
77 playbackLoc.scale(500f);
82 float num = sounds.length();
83 float period = (float)Math.PI * 2f;
91 for (
int i = 0; i < sounds.length(); i++) {
92 JSONObject sound = sounds.getJSONObject(i);
93 float threshold = (float) sound.getDouble(
"threshold");
94 float phaseMult = (float) sound.getDouble(
"phaseMult");
95 String soundId = sound.getString(
"sound");
102 float offset = period / num * (float) i;
104 float cos = (float) Math.cos(
phase * phaseMult + offset);
107 if (cos > threshold) {
108 volume = (cos - threshold) / (1f - threshold);
109 if (volume < 0) volume = 0;
110 if (volume > 1) volume = 1;
116 1f, volume * volumeMult,
121 }
catch (JSONException e) {
148 return super.containsPoint(point, radius);
165 return "radio_chatter";
static SoundPlayerAPI getSoundPlayer()
static SectorAPI getSector()
void advance(float amount)
boolean canPlayerHoldStationIn()
void init(String terrainId, SectorEntityToken entity, Object param)
void render(CampaignEngineLayers layer, ViewportAPI viewport)
EnumSet< CampaignEngineLayers > getActiveLayers()
boolean containsPoint(Vector2f point, float radius)
float getExtraSoundRadius()
String getNameForTooltip()
void applyEffect(SectorEntityToken entity, float days)
float getProximitySoundFactor()
RadioChatterParams params
String getEffectCategory()
static Vector2f getUnitVectorAtDegreeAngle(float degrees)
static final Vector2f ZERO
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static float getAngleInDegrees(Vector2f v)
void playLoop(String id, Object playingEntity, float pitch, float volume, Vector2f loc, Vector2f vel)
void suppressMusic(float maxLevel)
CampaignFleetAPI getPlayerFleet()
CampaignUIAPI getCampaignUI()