1package com.fs.starfarer.api.impl.campaign.intel;
3import java.util.ArrayList;
4import java.util.HashMap;
7import java.util.Random;
9import com.fs.starfarer.api.EveryFrameScript;
10import com.fs.starfarer.api.Global;
11import com.fs.starfarer.api.campaign.FactionAPI;
12import com.fs.starfarer.api.campaign.RepLevel;
13import com.fs.starfarer.api.impl.campaign.ids.Factions;
14import com.fs.starfarer.api.util.Misc;
15import com.fs.starfarer.api.util.Pair;
16import com.fs.starfarer.api.util.TimeoutTracker;
17import com.fs.starfarer.api.util.WeightedRandomPicker;
22 String id1 = a.
getId();
23 String id2 = b.
getId();
24 if (id1.compareTo(id2) < 0) {
25 return id1 +
"_" + id2;
27 return id2 +
"_" + id1;
30 public static final String
KEY =
"$core_factionHostilityManager";
47 return intel !=
null && !intel.
isEnding();
54 if (intel.
getId().equals(
id)) {
62 List<FactionHostilityIntel> result =
new ArrayList<FactionHostilityIntel>();
65 if (intel.
getOne() == faction || intel.
getTwo() == faction) {
78 return (
int) Math.ceil(factions.size() * mult);
86 return (
int) Math.ceil(factions.size() * mult);
91 List<FactionAPI> result =
new ArrayList<FactionAPI>();
92 for (
int i = 0; i < factions.size(); i++) {
100 if (checkNumMarkets) {
102 if (count <= 0)
continue;
135 if (pick ==
null)
return null;
154 super.advance(amount);
161 List<FactionAPI> factions =
new ArrayList<FactionAPI>();
162 Map<FactionAPI, Integer> marketCounts =
new HashMap<FactionAPI, Integer>();
166 if (count <= 0)
continue;
167 marketCounts.put(faction, count);
169 factions.add(faction);
174 boolean weighCommissionedMore =
false;
177 weighCommissionedMore =
true;
182 if (commission == faction && weighCommissionedMore) {
185 picker.
add(faction, w);
189 if (one ==
null)
return null;
193 if (faction == one)
continue;
194 if (faction.isHostileTo(one))
continue;
200 float w = marketCounts.get(faction);
201 picker.
add(faction, w);
205 if (two ==
null)
return null;
static SettingsAPI getSettings()
static SectorAPI getSector()
static final String CUSTOM_ENGAGES_IN_HOSTILITIES
List< EveryFrameScript > getActive()
void addActive(EveryFrameScript event)
boolean areHostilitiesOngoing(FactionAPI a, FactionAPI b)
static String getConflictId(FactionAPI a, FactionAPI b)
FactionHostilityManager()
TimeoutTracker< String > getRecentlyEnded()
void advance(float amount)
EveryFrameScript createEvent()
List< FactionAPI > getEligibleFactions(boolean checkNumMarkets)
static FactionHostilityManager getInstance()
void startHostilities(FactionAPI a, FactionAPI b)
TimeoutTracker< String > recentlyEnded
static final float CHECK_PROB
void notifyRecentlyEnded(String id)
void startHostilities(String a, String b)
List< FactionHostilityIntel > getHostilitiesInvolving(FactionAPI faction)
static final float TIMEOUT_AFTER_ENDING
static final float CHECK_DAYS
Pair< FactionAPI, FactionAPI > pickFactions()
FactionHostilityIntel getHostilties(FactionAPI a, FactionAPI b)
static List< MarketAPI > getFactionMarkets(FactionAPI faction, String econGroup)
static FactionAPI getCommissionFaction()
float getFloat(String key)
float convertToDays(float realSeconds)
boolean isPlayerFaction()
CampaignClockAPI getClock()
List< FactionAPI > getAllFactions()
FactionAPI getFaction(String factionId)
MemoryAPI getMemoryWithoutUpdate()
void set(String key, Object value)