1package com.fs.starfarer.api.campaign;
4import java.util.LinkedHashSet;
7import java.util.Random;
10import org.json.JSONObject;
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;
28 public static enum ShipPickMode {
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;
40 public ShipPickParams(ShipPickMode mode,
int maxFP, Long timestamp, Boolean blockFallback) {
43 this.timestamp = timestamp;
44 this.blockFallback = blockFallback;
46 public ShipPickParams(ShipPickMode mode,
int maxFP, Long timestamp) {
49 this.timestamp = timestamp;
51 public ShipPickParams(ShipPickMode mode,
int maxFP) {
52 this(mode, maxFP,
null);
54 public ShipPickParams(ShipPickMode mode) {
57 public ShipPickParams() {
58 this(ShipPickMode.PRIORITY_THEN_ALL, 1000);
61 public ShipPickParams clone() {
63 return (ShipPickParams) super.clone();
64 }
catch (CloneNotSupportedException e) {
69 public static ShipPickParams all() {
70 return new ShipPickParams(ShipPickMode.ALL);
72 public static ShipPickParams priority() {
73 return new ShipPickParams(ShipPickMode.PRIORITY_THEN_ALL);
75 public static ShipPickParams imported() {
76 return new ShipPickParams(ShipPickMode.IMPORTED);
159 List<ShipRolePick>
pickShip(String role, ShipPickParams params);
160 List<ShipRolePick>
pickShip(String role, ShipPickParams params, ShipFilter filter, Random random);
boolean knowsWeapon(String weaponId)
void setAutoEnableKnownWeapons(boolean autoEnableKnownWeapons)
void setRelationship(String id, float newValue)
boolean isIllegal(String commodityId)
void setWeaponTimestampToNow(String weaponId)
String getDisplayNameHasOrHave()
boolean isHostileTo(String other)
void removeKnownShip(String hullId)
float getCustomFloat(String key)
MemoryAPI getMemoryWithoutUpdate()
String getShipNamePrefixOverride()
Color getSecondaryUIColor()
String pickVoice(PersonImportance importance, Random random)
String getPersonNamePrefixAOrAn()
Map< String, String > getMusicMap()
PersonAPI createRandomPerson(Random random)
void clearShipRoleCache()
void addKnownShip(String hullId, boolean setTimestamp)
Map< String, Float > getWeaponSellFrequency()
String getDisplayNameWithArticleWithoutArticle()
void addKnownFighter(String wingId, boolean setTimestamp)
Set< String > getVariantsForRole(String roleId)
void setShipNamePrefixOverride(String shipNamePrefixOverride)
void addPriorityHullMod(String modId)
Color getRelColor(RepLevel level)
Set< String > getIllegalCommodities()
String getDisplayNameWithArticleOverride()
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 setShipTimestampToNow(String hullId)
void setSecondaryColorOverride(Color secondaryOverride)
FactionProductionAPI getProduction()
String getInternalCommsChannel()
void setPersonNamePrefixAOrAnOverride(String personNamePrefixAOrAnOverride)
String getDisplayNameOverride()
void addKnownWeapon(String weaponId, boolean setTimestamp)
String getPersonNamePrefixAOrAnOverride()
void setAutoEnableKnownFighters(boolean autoEnableKnownFighters)
boolean isAtBest(FactionAPI other, RepLevel level)
void removePriorityWeapon(String weaponId)
boolean isIllegal(CargoStackAPI stack)
Set< String > getKnownFighters()
String getFactionCrestOverride()
List< ShipRolePick > pickShip(String role, ShipPickParams params, ShipFilter filter, Random random)
void removePriorityHullMod(String modId)
boolean knowsFighter(String wingId)
String getDisplayIsOrAreOverride()
boolean ensureAtWorst(String id, RepLevel level)
void removeKnownHullMod(String modId)
boolean isAutoEnableKnownHullmods()
String getDisplayNameWithArticle()
RelationshipAPI getRelToPlayer()
boolean getCustomBoolean(String key)
void removeKnownFighter(String wingId)
Set< String > getAlwaysKnownShips()
void addKnownIndustry(String industryId)
void setShowInIntelTab(boolean isShowInIntelTab)
void addPriorityFighter(String wingId)
float getRelationship(String id)
Set< String > getKnownWeapons()
boolean useWhenImportingShip(String hullId)
boolean isWeaponPriority(String weaponId)
void addPriorityWeapon(String weaponId)
Set< String > getPriorityShips()
boolean isAtWorst(String id, RepLevel level)
String getPersonNamePrefix()
String pickRandomShipName(Random random)
String getCustomString(String key)
void setFactionLogoOverride(String factionLogoOverride)
String getDisplayNameLongWithArticle()
boolean isAutoEnableKnownShips()
String getFleetTypeName(String type)
PersonAPI createRandomPerson(Gender gender, Random random)
boolean ensureAtBest(String id, RepLevel level)
RepLevel getRelationshipLevel(String id)
int getNumAvailableForRole(String roleId, ShipPickMode mode)
void setFighterTimestampToNow(String wingId)
LinkedHashSet< String > getOverriddenHulls()
void setSecondaryColorSegmentsOverride(int secondaryColorSegmentsOverride)
Set< String > getPriorityWeapons()
float pickShipAndAddToFleet(String role, ShipPickParams params, CampaignFleetAPI fleet, Random random)
void removeKnownWeapon(String weaponId)
Map< String, Long > getFighterTimestamps()
void setDisplayNameWithArticleOverride(String displayNameWithArticleOverride)
boolean knowsHullMod(String modId)
void makeCommodityIllegal(String commodityId)
WeightedRandomPicker< String > getPersonalityPicker()
void setRelationship(String id, RepLevel level)
String pickRandomShipName()
Set< String > getKnownShips()
boolean isShowInIntelTab()
RepLevel getRelationshipLevel(FactionAPI faction)
void removeUseWhenImportingShip(String hullId)
WeightedRandomPicker< String > getPortraits(Gender gender)
PersonAPI createRandomPerson()
List< String > getStockFleetIds()
boolean isAutoEnableKnownFighters()
Color getSecondaryColorOverride()
boolean isFighterKnownAt(String wing, Long timestamp)
void addPriorityShip(String hullId)
Set< String > getKnownHullMods()
boolean adjustRelationship(String id, float delta, RepLevel limit)
Map< String, Long > getShipTimestamps()
float getTariffFraction()
boolean isAtBest(String id, RepLevel level)
void setDisplayNameOverride(String displayNameOverride)
PersonAPI createRandomPerson(Gender gender)
String getPost(String id)
Map< String, Long > getWeaponTimestamps()
String getRank(String id)
boolean knowsIndustry(String industryId)
String getEntityNamePrefix()
Map< String, Float > getHullFrequency()
void addKnownHullMod(String modId)
int getSecondaryColorSegmentsOverride()
void setAutoEnableKnownShips(boolean autoEnableKnownShips)
JSONObject getCustomJSONObject(String key)
Set< String > getPriorityHullMods()
boolean isHostileTo(FactionAPI other)
Color getRelColor(String otherFactionId)
void removePriorityFighter(String wingId)
boolean knowsShip(String hullId)
String getFactionLogoOverride()
String getDisplayNameIsOrAre()
void setFactionCrestOverride(String factionCrestOverride)
Map< String, Float > getFighterSellFrequency()
void setDisplayIsOrAreOverride(String displayIsOrAreOverride)
boolean isNeutralFaction()
FactionDoctrineAPI getDoctrine()
Map< String, Float > getVariantOverrides()
boolean isAutoEnableKnownWeapons()
Set< String > getPriorityFighters()
float getVariantWeightForRole(String roleId, ShipPickMode mode)
float pickShipAndAddToFleet(String role, ShipPickParams params, CampaignFleetAPI fleet)
Set< String > getKnownIndustries()
void makeCommodityLegal(String commodityId)
boolean isPlayerFaction()
boolean isAtWorst(FactionAPI other, RepLevel level)
boolean isFighterPriority(String wingId)
void removePriorityShip(String hullId)
FactionSpecAPI getFactionSpec()
boolean isShipPriority(String hullId)
String getShipNamePrefix()
String getDisplayNameLong()
void setAutoEnableKnownHullmods(boolean autoEnableKnownHullmods)
int getSecondarySegments()
boolean isShipKnownAt(String hullId, Long timestamp)