1package com.fs.starfarer.api.impl.campaign.shared;
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Comparator;
8import org.json.JSONException;
9import org.json.JSONObject;
11import com.fs.starfarer.api.Global;
12import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
13import com.fs.starfarer.api.campaign.InteractionDialogAPI;
14import com.fs.starfarer.api.campaign.JumpPointAPI;
15import com.fs.starfarer.api.campaign.JumpPointAPI.JumpDestination;
16import com.fs.starfarer.api.campaign.LocationAPI;
17import com.fs.starfarer.api.campaign.SectorEntityToken;
18import com.fs.starfarer.api.campaign.SpecialItemData;
19import com.fs.starfarer.api.impl.campaign.JumpPointInteractionDialogPluginImpl;
20import com.fs.starfarer.api.impl.campaign.ids.Entities;
21import com.fs.starfarer.api.impl.campaign.ids.Factions;
22import com.fs.starfarer.api.impl.campaign.ids.Items;
23import com.fs.starfarer.api.impl.campaign.rulecmd.AddRemoveCommodity;
27 public static String
KEY =
"$core_wormholeManager";
48 public static class WormholeItemData {
49 public String category;
52 public WormholeItemData(String jsonStr) {
54 JSONObject json =
new JSONObject(jsonStr);
55 category = json.getString(
"cat");
56 id = json.getString(
"id");
57 name = json.getString(
"name");
58 }
catch (JSONException e) {
59 throw new RuntimeException(
"Unable to parse Wormhole Anchor data [" + jsonStr +
"]", e);
62 public WormholeItemData(String category, String
id, String name) {
63 this.category = category;
68 public String toJsonStr() {
70 JSONObject json =
new JSONObject();
71 json.put(
"cat", category);
73 json.put(
"name", name);
74 return json.toString();
75 }
catch (JSONException e) {
81 public static class WormholeData {
82 public SpecialItemData item;
83 public JumpPointAPI jumpPoint;
84 public WormholeItemData itemData;
85 public WormholeData(SpecialItemData item, JumpPointAPI jumpPoint, WormholeItemData itemData) {
87 this.jumpPoint = jumpPoint;
88 this.itemData = itemData;
93 boolean makeUnstable =
true;
102 protected List<WormholeData>
deployed =
new ArrayList<WormholeData>();
106 List<WormholeData> sorted =
new ArrayList<WormholeData>(
deployed);
107 Collections.sort(sorted,
new Comparator<WormholeData>() {
108 public int compare(WormholeData o1, WormholeData o2) {
109 return o1.itemData.name.compareTo(o2.itemData.name);
113 for (WormholeData data :
deployed) {
116 boolean added =
false;
117 for (WormholeData other : sorted) {
118 if (other == data)
continue;
119 if (!data.itemData.category.equals(other.itemData.category))
continue;
121 jp.
addDestination(
new JumpDestination(other.jumpPoint,
"wormhole terminus " + other.itemData.name));
133 WormholeItemData itemData =
new WormholeItemData(item.
getData());
136 if (data !=
null)
return data.jumpPoint;
155 if (stableLocation.
getOrbit() !=
null) {
166 deployed.add(
new WormholeData(item, wormhole, itemData));
179 for (WormholeData data :
deployed) {
180 if (data.jumpPoint == jp) {
206 if (
id ==
null)
return false;
207 for (WormholeData data :
deployed) {
208 if (
id.equals(data.itemData.id))
return true;
213 if (
id ==
null)
return null;
214 for (WormholeData data :
deployed) {
215 if (
id.equals(data.itemData.id))
return data;
224 WormholeItemData itemData =
new WormholeItemData(category,
id, name);
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static SectorAPI getSector()
static final String UNSTABLE_KEY
static final String STABLE_LOCATION
static final String NEUTRAL
static final String WORMHOLE_ANCHOR
static void addItemGainText(SpecialItemData data, int quantity, TextPanelAPI text)
static void addItemLossText(SpecialItemData data, int quantity, TextPanelAPI text)
static float UNSTABLE_DURATION_MAX
static String LIMBO_STABLE_LOCATION
void removeWormhole(JumpPointAPI jp, InteractionDialogAPI dialog)
static float UNSTABLE_DURATION_MIN
JumpPointAPI addWormhole(SpecialItemData item, SectorEntityToken stableLocation, InteractionDialogAPI dialog)
WormholeData getDeployed(String id)
static boolean willWormholeBecomeUnstable(SectorEntityToken stableLocation)
List< WormholeData > deployed
static SpecialItemData createWormholeAnchor(String category, String id, String name)
static String GOT_WORMHOLE_CALIBRATION_DATA
boolean isDeployed(String id)
void updateWormholeDestinations()
static SpecialItemData createWormholeAnchor(String id, String name)
JumpPointAPI createJumpPoint(String id, String name)
boolean getBoolean(String key)
boolean removeItems(CargoAPI.CargoItemType itemType, Object data, float quantity)
void addItems(CargoAPI.CargoItemType itemType, Object data, float quantity)
TextPanelAPI getTextPanel()
void setRadius(float radius)
void setStandardWormholeToStarfieldVisual()
void setStandardWormholeToNothingVisual()
void addDestination(JumpDestination destination)
void addEntity(SectorEntityToken entity)
CustomCampaignEntityAPI addCustomEntity(String id, String name, String type, String factionId)
void removeEntity(SectorEntityToken entity)
CampaignFleetAPI getPlayerFleet()
MemoryAPI getPlayerMemoryWithoutUpdate()
MemoryAPI getMemoryWithoutUpdate()
LocationAPI getContainingLocation()
void setLocation(float x, float y)
void setOrbit(OrbitAPI orbit)
MemoryAPI getMemoryWithoutUpdate()
void set(String key, Object value)
boolean getBoolean(String key)