Starsector API
Loading...
Searching...
No Matches
FactionAPI.java
Go to the documentation of this file.
1package com.fs.starfarer.api.campaign;
2
3import java.awt.Color;
4import java.util.LinkedHashSet;
5import java.util.List;
6import java.util.Map;
7import java.util.Random;
8import java.util.Set;
9
10import org.json.JSONObject;
11
12import com.fs.starfarer.api.campaign.rules.HasMemory;
13import com.fs.starfarer.api.campaign.rules.MemoryAPI;
14import com.fs.starfarer.api.characters.FullName.Gender;
15import com.fs.starfarer.api.characters.PersonAPI;
16import com.fs.starfarer.api.characters.RelationshipAPI;
17import com.fs.starfarer.api.fleet.ShipFilter;
18import com.fs.starfarer.api.fleet.ShipRolePick;
19import com.fs.starfarer.api.util.WeightedRandomPicker;
20
26public interface FactionAPI extends HasMemory {
27
28 public static enum ShipPickMode {
29 IMPORTED,
30 ALL,
31 PRIORITY_THEN_ALL,
32 PRIORITY_ONLY,
33 }
34 public static class ShipPickParams implements Cloneable {
35 public ShipPickMode mode;
36 public int maxFP = 1000;
37 public Long timestamp = null;
38 public Boolean blockFallback = null;
39
40 public ShipPickParams(ShipPickMode mode, int maxFP, Long timestamp, Boolean blockFallback) {
41 this.mode = mode;
42 this.maxFP = maxFP;
43 this.timestamp = timestamp;
44 this.blockFallback = blockFallback;
45 }
46 public ShipPickParams(ShipPickMode mode, int maxFP, Long timestamp) {
47 this.mode = mode;
48 this.maxFP = maxFP;
49 this.timestamp = timestamp;
50 }
51 public ShipPickParams(ShipPickMode mode, int maxFP) {
52 this(mode, maxFP, null);
53 }
54 public ShipPickParams(ShipPickMode mode) {
55 this(mode, 1000);
56 }
57 public ShipPickParams() {
58 this(ShipPickMode.PRIORITY_THEN_ALL, 1000);
59 }
60 @Override
61 public ShipPickParams clone() {
62 try {
63 return (ShipPickParams) super.clone();
64 } catch (CloneNotSupportedException e) {
65 return null;
66 }
67 }
68
69 public static ShipPickParams all() {
70 return new ShipPickParams(ShipPickMode.ALL);
71 }
72 public static ShipPickParams priority() {
73 return new ShipPickParams(ShipPickMode.PRIORITY_THEN_ALL);
74 }
75 public static ShipPickParams imported() {
76 return new ShipPickParams(ShipPickMode.IMPORTED);
77 }
78 }
79
80
81 void adjustRelationship(String id, float delta);
82 boolean adjustRelationship(String id, float delta, RepLevel limit);
83 void setRelationship(String id, float newValue);
84 void setRelationship(String id, RepLevel level);
85
86 boolean ensureAtBest(String id, RepLevel level);
87 boolean ensureAtWorst(String id, RepLevel level);
88
91 boolean isAtWorst(String id, RepLevel level);
92 boolean isAtWorst(FactionAPI other, RepLevel level);
93 boolean isAtBest(String id, RepLevel level);
94 boolean isAtBest(FactionAPI other, RepLevel level);
95 boolean isHostileTo(FactionAPI other);
96 boolean isHostileTo(String other);
97
98// boolean isNeutralTo(FactionAPI other);
99// boolean isFriendlyTo(FactionAPI other);
100// boolean isNeutralTo(String other);
101// boolean isFriendlyTo(String other);
102
103
104 float getRelationship(String id);
105 String getId();
108
109 Color getColor();
114
120
123
124
125 List<String> getStockFleetIds();
126
127// boolean isIllegal(String commodityId);
128 //boolean isHostile(FactionAPI other);
129
130 MemoryAPI getMemory();
131
132
133
146 float pickShipAndAddToFleet(String role, ShipPickParams params, CampaignFleetAPI fleet);
147
148 String getFleetTypeName(String type);
152
153
154 Color getRelColor(String otherFactionId);
156 boolean isIllegal(String commodityId);
157 boolean isIllegal(CargoStackAPI stack);
158
159 List<ShipRolePick> pickShip(String role, ShipPickParams params);
160 List<ShipRolePick> pickShip(String role, ShipPickParams params, ShipFilter filter, Random random);
161
162 void makeCommodityIllegal(String commodityId);
163 void makeCommodityLegal(String commodityId);
164
169
171 PersonAPI createRandomPerson(Gender gender);
172 String getLogo();
173
174 JSONObject getCustom();
176 Color getRelColor(RepLevel level);
177 RelationshipAPI getRelToPlayer();
178
179 String getRank(String id);
180 String getPost(String id);
182
184 boolean getCustomBoolean(String key);
185 String getCustomString(String key);
186
187
190 String getCrest();
194 float pickShipAndAddToFleet(String role, ShipPickParams params, CampaignFleetAPI fleet, Random random);
195
196 Set<String> getVariantsForRole(String roleId);
197 PersonAPI createRandomPerson(Gender gender, Random random);
198 PersonAPI createRandomPerson(Random random);
199 float getCustomFloat(String key);
201
203 void setDisplayNameOverride(String displayNameOverride);
205 void setDisplayNameWithArticleOverride(String displayNameWithArticleOverride);
207 void setDisplayIsOrAreOverride(String displayIsOrAreOverride);
209 void setShipNamePrefixOverride(String shipNamePrefixOverride);
211 void setPersonNamePrefixAOrAnOverride(String personNamePrefixAOrAnOverride);
213 void setFactionLogoOverride(String factionLogoOverride);
215 void setFactionCrestOverride(String factionCrestOverride);
216 WeightedRandomPicker<String> getPortraits(Gender gender);
217
218 Set<String> getKnownShips();
219 void addKnownShip(String hullId, boolean setTimestamp);
220
226 void removeKnownShip(String hullId);
227 Set<String> getKnownWeapons();
228 void addKnownWeapon(String weaponId, boolean setTimestamp);
229
235 void removeKnownWeapon(String weaponId);
236 Set<String> getKnownFighters();
237 void addKnownFighter(String wingId, boolean setTimestamp);
238
244 void removeKnownFighter(String wingId);
245 Set<String> getKnownIndustries();
246 void addKnownIndustry(String industryId);
247 void removeKnownIndustry(String industryId);
248 boolean knowsShip(String hullId);
249 boolean knowsWeapon(String weaponId);
250 boolean knowsFighter(String wingId);
251 boolean knowsIndustry(String industryId);
252
253 Set<String> getPriorityShips();
254 void addPriorityShip(String hullId);
255 void removePriorityShip(String hullId);
256 boolean isShipPriority(String hullId);
257 Set<String> getPriorityWeapons();
258 void addPriorityWeapon(String weaponId);
259 void removePriorityWeapon(String weaponId);
260 boolean isWeaponPriority(String weaponId);
261 Set<String> getPriorityFighters();
262 void addPriorityFighter(String wingId);
263 void removePriorityFighter(String wingId);
264 boolean isFighterPriority(String wingId);
265
266
268 void setAutoEnableKnownWeapons(boolean autoEnableKnownWeapons);
270 void setAutoEnableKnownShips(boolean autoEnableKnownShips);
272 void setAutoEnableKnownFighters(boolean autoEnableKnownFighters);
274 void setAutoEnableKnownHullmods(boolean autoEnableKnownHullmods);
275
276 void addKnownHullMod(String modId);
277 void removeKnownHullMod(String modId);
278 boolean knowsHullMod(String modId);
279 Set<String> getKnownHullMods();
280 void addPriorityHullMod(String modId);
281 void removePriorityHullMod(String modId);
282 boolean isHullModPriority(String modId);
283 Set<String> getPriorityHullMods();
285 Map<String, Float> getVariantOverrides();
286
291 LinkedHashSet<String> getOverriddenHulls();
292 Map<String, Float> getHullFrequency();
293
299 Set<String> getAlwaysKnownShips();
300 void addUseWhenImportingShip(String hullId);
301 void removeUseWhenImportingShip(String hullId);
302 boolean useWhenImportingShip(String hullId);
303
309 WeightedRandomPicker<String> getPersonalityPicker();
311 Map<String, Long> getWeaponTimestamps();
312 Map<String, Long> getFighterTimestamps();
313 Map<String, Long> getShipTimestamps();
314 void setShipTimestampToNow(String hullId);
315 void setWeaponTimestampToNow(String weaponId);
316 void setFighterTimestampToNow(String wingId);
317
318 boolean isShipKnownAt(String hullId, Long timestamp);
319 boolean isWeaponKnownAt(String weaponId, Long timestamp);
320 boolean isFighterKnownAt(String wing, Long timestamp);
321 int getNumAvailableForRole(String roleId, ShipPickMode mode);
322
325 String pickRandomShipName(Random random);
326
333 float getApproximateMaxFPPerFleet(ShipPickMode mode);
334 Map<String, String> getMusicMap();
335 String getBarSound();
336 int getRepInt(String id);
337 String pickVoice(PersonImportance importance, Random random);
339
340 Map<String, Float> getWeaponSellFrequency();
341 Map<String, Float> getFighterSellFrequency();
342 Map<String, Float> getHullmodSellFrequency();
344
346 JSONObject getCustomJSONObject(String key);
347 float getVariantWeightForRole(String roleId, ShipPickMode mode);
349 void setSecondaryColorOverride(Color secondaryOverride);
351 void setSecondaryColorSegmentsOverride(int secondaryColorSegmentsOverride);
352
353
354}
355
356
357
358
boolean knowsWeapon(String weaponId)
void setAutoEnableKnownWeapons(boolean autoEnableKnownWeapons)
void setRelationship(String id, float newValue)
boolean isIllegal(String commodityId)
void setWeaponTimestampToNow(String weaponId)
String pickVoice(PersonImportance importance, Random random)
Map< String, String > getMusicMap()
PersonAPI createRandomPerson(Random random)
void addKnownShip(String hullId, boolean setTimestamp)
Map< String, Float > getWeaponSellFrequency()
void addKnownFighter(String wingId, boolean setTimestamp)
Set< String > getVariantsForRole(String roleId)
void setShipNamePrefixOverride(String shipNamePrefixOverride)
Map< String, Float > getHullmodSellFrequency()
List< ShipRolePick > pickShip(String role, ShipPickParams params)
float getApproximateMaxFPPerFleet(ShipPickMode mode)
void adjustRelationship(String id, float delta)
void removeKnownIndustry(String industryId)
boolean isHullModPriority(String modId)
void addUseWhenImportingShip(String hullId)
boolean isWeaponKnownAt(String weaponId, Long timestamp)
void setSecondaryColorOverride(Color secondaryOverride)
FactionProductionAPI getProduction()
void setPersonNamePrefixAOrAnOverride(String personNamePrefixAOrAnOverride)
void addKnownWeapon(String weaponId, boolean setTimestamp)
void setAutoEnableKnownFighters(boolean autoEnableKnownFighters)
boolean isAtBest(FactionAPI other, RepLevel level)
void removePriorityWeapon(String weaponId)
boolean isIllegal(CargoStackAPI stack)
List< ShipRolePick > pickShip(String role, ShipPickParams params, ShipFilter filter, Random random)
boolean ensureAtWorst(String id, RepLevel level)
void addKnownIndustry(String industryId)
void setShowInIntelTab(boolean isShowInIntelTab)
boolean useWhenImportingShip(String hullId)
boolean isWeaponPriority(String weaponId)
void addPriorityWeapon(String weaponId)
boolean isAtWorst(String id, RepLevel level)
String pickRandomShipName(Random random)
void setFactionLogoOverride(String factionLogoOverride)
PersonAPI createRandomPerson(Gender gender, Random random)
boolean ensureAtBest(String id, RepLevel level)
int getNumAvailableForRole(String roleId, ShipPickMode mode)
void setFighterTimestampToNow(String wingId)
LinkedHashSet< String > getOverriddenHulls()
void setSecondaryColorSegmentsOverride(int secondaryColorSegmentsOverride)
float pickShipAndAddToFleet(String role, ShipPickParams params, CampaignFleetAPI fleet, Random random)
void removeKnownWeapon(String weaponId)
Map< String, Long > getFighterTimestamps()
void setDisplayNameWithArticleOverride(String displayNameWithArticleOverride)
void makeCommodityIllegal(String commodityId)
WeightedRandomPicker< String > getPersonalityPicker()
void setRelationship(String id, RepLevel level)
RepLevel getRelationshipLevel(FactionAPI faction)
void removeUseWhenImportingShip(String hullId)
WeightedRandomPicker< String > getPortraits(Gender gender)
boolean isFighterKnownAt(String wing, Long timestamp)
boolean adjustRelationship(String id, float delta, RepLevel limit)
Map< String, Long > getShipTimestamps()
boolean isAtBest(String id, RepLevel level)
void setDisplayNameOverride(String displayNameOverride)
PersonAPI createRandomPerson(Gender gender)
Map< String, Long > getWeaponTimestamps()
boolean knowsIndustry(String industryId)
Map< String, Float > getHullFrequency()
void setAutoEnableKnownShips(boolean autoEnableKnownShips)
JSONObject getCustomJSONObject(String key)
boolean isHostileTo(FactionAPI other)
Color getRelColor(String otherFactionId)
void setFactionCrestOverride(String factionCrestOverride)
Map< String, Float > getFighterSellFrequency()
void setDisplayIsOrAreOverride(String displayIsOrAreOverride)
Map< String, Float > getVariantOverrides()
float getVariantWeightForRole(String roleId, ShipPickMode mode)
float pickShipAndAddToFleet(String role, ShipPickParams params, CampaignFleetAPI fleet)
void makeCommodityLegal(String commodityId)
boolean isAtWorst(FactionAPI other, RepLevel level)
boolean isFighterPriority(String wingId)
boolean isShipPriority(String hullId)
void setAutoEnableKnownHullmods(boolean autoEnableKnownHullmods)
boolean isShipKnownAt(String hullId, Long timestamp)