1package com.fs.starfarer.api.impl.campaign.econ.impl;
3import java.util.ArrayList;
4import java.util.HashSet;
5import java.util.Iterator;
6import java.util.LinkedHashMap;
9import java.util.Random;
14import com.fs.starfarer.api.Global;
15import com.fs.starfarer.api.campaign.CargoAPI;
16import com.fs.starfarer.api.campaign.FactionAPI;
17import com.fs.starfarer.api.campaign.SpecialItemData;
18import com.fs.starfarer.api.campaign.SpecialItemSpecAPI;
19import com.fs.starfarer.api.campaign.comm.CommMessageAPI.MessageClickAction;
20import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
21import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
22import com.fs.starfarer.api.campaign.econ.Industry;
23import com.fs.starfarer.api.campaign.econ.InstallableIndustryItemPlugin;
24import com.fs.starfarer.api.campaign.econ.InstallableIndustryItemPlugin.InstallableItemDescriptionMode;
25import com.fs.starfarer.api.campaign.econ.MarketAPI;
26import com.fs.starfarer.api.campaign.econ.MarketAPI.MarketInteractionMode;
27import com.fs.starfarer.api.campaign.econ.MarketImmigrationModifier;
28import com.fs.starfarer.api.campaign.econ.MutableCommodityQuantity;
29import com.fs.starfarer.api.campaign.impl.items.GenericSpecialItemPlugin;
30import com.fs.starfarer.api.campaign.listeners.ListenerUtil;
31import com.fs.starfarer.api.campaign.rules.MemoryAPI;
32import com.fs.starfarer.api.combat.MutableStat;
33import com.fs.starfarer.api.combat.MutableStat.StatMod;
34import com.fs.starfarer.api.impl.SharedUnlockData;
35import com.fs.starfarer.api.impl.campaign.DebugFlags;
36import com.fs.starfarer.api.impl.campaign.econ.impl.ConstructionQueue.ConstructionQueueItem;
37import com.fs.starfarer.api.impl.campaign.ids.Commodities;
38import com.fs.starfarer.api.impl.campaign.ids.Industries;
39import com.fs.starfarer.api.impl.campaign.ids.Items;
40import com.fs.starfarer.api.impl.campaign.ids.Sounds;
41import com.fs.starfarer.api.impl.campaign.ids.Stats;
42import com.fs.starfarer.api.impl.campaign.ids.Strings;
43import com.fs.starfarer.api.impl.campaign.ids.Tags;
44import com.fs.starfarer.api.impl.campaign.intel.BaseIntelPlugin;
45import com.fs.starfarer.api.impl.campaign.intel.MessageIntel;
46import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidDangerLevel;
47import com.fs.starfarer.api.impl.codex.CodexDataV2;
48import com.fs.starfarer.api.loading.IndustrySpecAPI;
49import com.fs.starfarer.api.ui.Alignment;
50import com.fs.starfarer.api.ui.IconRenderMode;
51import com.fs.starfarer.api.ui.LabelAPI;
52import com.fs.starfarer.api.ui.TooltipMakerAPI;
53import com.fs.starfarer.api.ui.TooltipMakerAPI.StatModValueGetter;
54import com.fs.starfarer.api.util.Misc;
55import com.fs.starfarer.api.util.Pair;
73 }
catch (CloneNotSupportedException e) {
84 if (commodityId ==
null) {
85 return "Various shortages";
93 protected Map<String, MutableCommodityQuantity>
supply =
new LinkedHashMap<String, MutableCommodityQuantity>();
94 protected Map<String, MutableCommodityQuantity>
demand =
new LinkedHashMap<String, MutableCommodityQuantity>();
157 private transient String modId;
158 private transient String [] modIds;
165 modIds =
new String[10];
166 for (
int i = 0; i < modIds.length; i++) {
167 modIds[i] = modId +
"_" + i;
174 for (String
id :
new ArrayList<String>(
supply.keySet())) {
180 for (String
id :
new ArrayList<String>(
demand.keySet())) {
199 public void apply(
boolean withIncomeUpdate) {
202 if (withIncomeUpdate) {
215 if (effect !=
null) {
217 if (unmet ==
null || unmet.isEmpty()) {
240 if (effect !=
null) {
273 return modIds[index];
276 public void demand(String commodityId,
int quantity) {
280 public void demand(String commodityId,
int quantity, String desc) {
281 demand(0, commodityId, quantity, desc);
283 public void demand(
int index, String commodityId,
int quantity, String desc) {
286 public void demand(String modId, String commodityId,
int quantity, String desc) {
307 public void supply(String commodityId,
int quantity) {
311 public void supply(String commodityId,
int quantity, String desc) {
312 supply(0, commodityId, quantity, desc);
315 public void supply(
int index, String commodityId,
int quantity, String desc) {
318 public void supply(String modId, String commodityId,
int quantity, String desc) {
344 for (String commodity : commodities) {
348 if (
getSupply(commodity).getQuantity().isUnmodified())
continue;
366 if (sizeOverride >= 0) size = sizeOverride;
368 sizeMult = Math.max(1, sizeMult - 2);
432 sizeMult = Math.max(1, sizeMult - 2);
503 if (left < 1) left = 1;
504 String days =
"days";
505 if (left == 1) days =
"day";
507 return "" + left +
" " + days +
"";
511 if (left < 1) left = 1;
512 String days =
"days";
513 if (left == 1) days =
"day";
515 return left +
" " + days;
521 if (left < 1) left = 1;
522 String days =
"days";
523 if (left == 1) days =
"day";
525 return "Disrupted: " + left +
" " + days +
" left";
529 if (left < 1) left = 1;
530 String days =
"days";
531 if (left == 1) days =
"day";
539 return "Upgrading: " + left +
" " + days +
" left";
541 return "Building: " + left +
" " + days +
" left";
607 ConstructionQueueItem next =
null;
609 while (iter.hasNext()) {
623 int refund = next.cost;
671 if (
aiCoreId !=
null && !forUpgrade) {
678 if (
special !=
null && !forUpgrade) {
688 if (mode ==
null)
return null;
690 if (mode == MarketInteractionMode.REMOTE) {
709 for (String
id :
new ArrayList<String>(
supply.keySet())) {
717 for (String
id :
new ArrayList<String>(
demand.keySet())) {
727 List<MutableCommodityQuantity> result =
new ArrayList<MutableCommodityQuantity>();
729 if (q.getQuantity().getModifiedValue() > 0) {
737 List<MutableCommodityQuantity> result =
new ArrayList<MutableCommodityQuantity>();
739 if (q.getQuantity().getModifiedValue() > 0) {
810 for (String
id : commodityIds) {
815 int deficit = Math.max(
demand - available, 0);
816 if (deficit > result.
two) {
818 result.two = deficit;
825 List<String> commodities =
new ArrayList<String>();
827 commodities.add(curr.getCommodityId());
833 List<Pair<String, Integer>> result =
new ArrayList<Pair<String,Integer>>();
834 for (String
id : commodityIds) {
839 int deficit = Math.max(
demand - available, 0);
854 if (size <= 0)
return 0f;
861 if (size <= 0)
return 0f;
892 supply =
new LinkedHashMap<String, MutableCommodityQuantity>();
893 demand =
new LinkedHashMap<String, MutableCommodityQuantity>();
919 return "Can not be built";
970 if (mode != IndustryTooltipMode.NORMAL) {
973 curr.getAvailableStat().setBaseValue(100);
992 if (override !=
null) {
1008 if (
isIndustry() && (mode == IndustryTooltipMode.ADD_INDUSTRY ||
1009 mode == IndustryTooltipMode.UPGRADE ||
1010 mode == IndustryTooltipMode.DOWNGRADE)
1021 if (mode == IndustryTooltipMode.UPGRADE) {
1023 if (
getSpec().
getId().equals(curr.getSpec().getUpgrade())) {
1024 if (curr.isIndustry()) {
1030 }
else if (mode == IndustryTooltipMode.DOWNGRADE) {
1032 if (
getSpec().
getId().equals(curr.getSpec().getDowngrade())) {
1033 if (curr.isIndustry()) {
1044 Color h1 = highlight;
1045 Color h2 = highlight;
1051 tooltip.
addPara(
"Maximum number of industries reached", bad, opad);
1065 if (left < 1) left = 1;
1066 String days =
"days";
1067 if (left == 1) days =
"day";
1069 tooltip.
addPara(
"Operations disrupted! %s " + days +
" until return to normal function.",
1074 if (mode == IndustryTooltipMode.NORMAL) {
1084 if (mode == IndustryTooltipMode.QUEUED) {
1086 tooltip.
addPara(
"Currently queued for construction. Does not have any impact on the colony.", opad);
1089 if (left < 1) left = 1;
1090 String days =
"days";
1091 if (left == 1) days =
"day";
1092 tooltip.
addPara(
"Requires %s " + days +
" to build.", opad, highlight,
"" + left);
1096 tooltip.
addPara(
"Currently under construction and not producing anything or providing other benefits.", opad);
1099 if (left < 1) left = 1;
1100 String days =
"days";
1101 if (left == 1) days =
"day";
1102 tooltip.
addPara(
"Requires %s more " + days +
" to finish building.", opad, highlight,
"" + left);
1107 (mode == IndustryTooltipMode.ADD_INDUSTRY ||
1108 mode == IndustryTooltipMode.UPGRADE ||
1109 mode == IndustryTooltipMode.DOWNGRADE)) {
1111 if (reason !=
null) {
1112 tooltip.
addPara(reason, bad, opad);
1121 if (mode == IndustryTooltipMode.UPGRADE || mode == IndustryTooltipMode.ADD_INDUSTRY) {
1126 String daysStr =
"days";
1127 if (days == 1) daysStr =
"day";
1130 if (mode == IndustryTooltipMode.UPGRADE) {
1131 label = tooltip.
addPara(
"%s and %s " + daysStr +
" to upgrade. You have %s.", opad,
1132 highlight, costStr,
"" + days, creditsStr);
1134 label = tooltip.
addPara(
"%s and %s " + daysStr +
" to build. You have %s.", opad,
1135 highlight, costStr,
"" + days, creditsStr);
1138 if (credits >= cost) {
1143 }
else if (mode == IndustryTooltipMode.DOWNGRADE) {
1144 if (
getSpec().getUpgrade() !=
null) {
1149 int cost = (int) (
spec.
getCost() * refundFraction);
1152 tooltip.
addPara(
"%s refunded for downgrade.", opad, highlight, refundStr);
1163 public String getPercentValue(StatMod mod) {
return null;}
1164 public String getMultValue(StatMod mod) {
return null;}
1165 public Color getModColor(StatMod mod) {
return null;}
1166 public String getFlatValue(StatMod mod) {
1176 public String getPercentValue(StatMod mod) {
return null;}
1177 public String getMultValue(StatMod mod) {
return null;}
1178 public Color getModColor(StatMod mod) {
return null;}
1179 public String getFlatValue(StatMod mod) {
1187 boolean hasSupply =
false;
1189 int qty = curr.getQuantity().getModifiedInt();
1190 if (qty <= 0)
continue;
1194 boolean hasDemand =
false;
1196 int qty = curr.getQuantity().getModifiedInt();
1197 if (qty <= 0)
continue;
1202 float maxIconsPerRow = 10f;
1209 int qty = curr.getQuantity().getModifiedInt();
1219 for (StatMod mod : curr.getQuantity().getFlatMods().values()) {
1220 if (mod.value > 0) {
1221 plus += (int) mod.value;
1222 }
else if (mod.desc !=
null && mod.desc.contains(
"shortage")) {
1223 minus += (int) Math.abs(mod.value);
1226 minus = Math.min(minus, plus);
1227 if (minus > 0 && mode == IndustryTooltipMode.NORMAL) {
1230 icons += normal + Math.max(0, minus);
1232 int rows = (int) Math.ceil(icons / maxIconsPerRow);
1252 int qty = curr.getQuantity().getModifiedInt();
1253 if (qty <= 0)
continue;
1258 int normal = Math.min(available, qty);
1259 int red = Math.max(0, qty - available);
1261 if (mode != IndustryTooltipMode.NORMAL) {
1271 icons += normal + Math.max(0, red);
1273 int rows = (int) Math.ceil(icons / maxIconsPerRow);
1281 if (!needToAddIndustry) {
1289 tooltip.
addPara(
"*Shown production and demand values are already adjusted based on current market size and local conditions.", gray, opad);
1292 if (needToAddIndustry) {
1298 if (!needToAddIndustry) {
1313 boolean addedSomething =
false;
1315 AICoreDescriptionMode aiCoreDescMode = AICoreDescriptionMode.INDUSTRY_TOOLTIP;
1317 addedSomething =
true;
1321 if (!addedSomething) {
1322 heading.
setText(
"No items installed");
1328 if (
special ==
null)
return false;
1346 List<SpecialItemData> result =
new ArrayList<SpecialItemData>();
1354 if (
special !=
null)
return false;
1359 String [] industries =
spec.getParams().split(
",");
1360 Set<String> all =
new HashSet<String>();
1361 for (String ind: industries) all.add(ind.trim());
1362 return all.contains(
getId());
1386 if (mode == AICoreDescriptionMode.MANAGE_CORE_TOOLTIP) {
1387 if (coreId ==
null) {
1388 tooltip.
addPara(
"No AI core currently assigned. Click to assign an AI core from your cargo.", opad);
1412 String pre =
"Alpha-level AI core currently assigned. ";
1413 if (mode == AICoreDescriptionMode.MANAGE_CORE_DIALOG_LIST || mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP) {
1414 pre =
"Alpha-level AI core. ";
1416 if (mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP || mode == AICoreDescriptionMode.MANAGE_CORE_TOOLTIP) {
1419 text.
addPara(pre +
"Reduces upkeep cost by %s. Reduces demand by %s unit. " +
1420 "Increases production by %s unit.", 0f, highlight,
1427 tooltip.
addPara(pre +
"Reduces upkeep cost by %s. Reduces demand by %s unit. " +
1428 "Increases production by %s unit.", opad, highlight,
1437 String pre =
"Beta-level AI core currently assigned. ";
1438 if (mode == AICoreDescriptionMode.MANAGE_CORE_DIALOG_LIST || mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP) {
1439 pre =
"Beta-level AI core. ";
1441 if (mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP || mode == AICoreDescriptionMode.MANAGE_CORE_TOOLTIP) {
1444 text.
addPara(pre +
"Reduces upkeep cost by %s. Reduces demand by %s unit.", opad, highlight,
1450 tooltip.
addPara(pre +
"Reduces upkeep cost by %s. Reduces demand by %s unit.", opad, highlight,
1457 String pre =
"Gamma-level AI core currently assigned. ";
1458 if (mode == AICoreDescriptionMode.MANAGE_CORE_DIALOG_LIST || mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP) {
1459 pre =
"Gamma-level AI core. ";
1461 if (mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP || mode == AICoreDescriptionMode.MANAGE_CORE_TOOLTIP) {
1467 text.
addPara(pre +
"Reduces demand by %s unit.", opad, highlight,
1475 tooltip.
addPara(pre +
"Reduces demand by %s unit.", opad, highlight,
1482 if (core ==
null)
return;
1487 String pre = core.
getName() +
" currently assigned. ";
1488 if (mode == AICoreDescriptionMode.MANAGE_CORE_DIALOG_LIST || mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP) {
1492 if (mode == AICoreDescriptionMode.INDUSTRY_TOOLTIP || mode == AICoreDescriptionMode.MANAGE_CORE_TOOLTIP) {
1494 text.
addPara(pre +
"No effect.", opad);
1499 tooltip.
addPara(pre +
"No effect.", opad);
1534 String name =
"AI Core assigned";
1536 name =
"Alpha Core assigned";
1538 name =
"Beta Core assigned";
1540 name =
"Gamma Core assigned";
1651 Set<String> cores =
new HashSet<String>();
1655 return cores.contains(str);
1659 for (String str : params) {
1666 for (String str : params) {
1671 if (
spec ==
null)
continue;
1673 String [] industries =
spec.getParams().split(
",");
1674 Set<String> all =
new HashSet<String>();
1675 for (String ind : industries) all.add(ind.trim());
1676 if (all.contains(
getId())) {
1694 if (stabilityPenalty > stabilityMod) {
1695 stabilityPenalty = stabilityMod;
1697 stabilityMod -= stabilityPenalty;
1698 if (stabilityMod > 0) {
1716 if (deficit < 0) deficit = 0;
1717 return (
int) Math.round(deficit);
1729 if (stabilityPenalty > stabilityMod) {
1730 stabilityPenalty = stabilityMod;
1735 if (stabilityPenalty != 0) {
1736 fake.
modifyFlat(
"2", -stabilityPenalty, str);
1739 int total = stabilityMod - stabilityPenalty;
1740 String totalStr =
"+" + total;
1742 totalStr =
"" + total;
1747 tooltip.
addPara(
"Stability bonus: %s", opad, h, totalStr);
1749 tooltip.
addPara(
"Stability penalty: %s", opad, h, totalStr);
1752 public String getPercentValue(StatMod mod) {
1755 public String getMultValue(StatMod mod) {
1758 public Color getModColor(StatMod mod) {
1762 public String getFlatValue(StatMod mod) {
1779 protected transient String
dKey =
null;
1782 dKey =
"$core_disrupted_" + getClass().getSimpleName();
1798 dur = Math.max(memory.
getExpire(key), dur);
1804 memory.
set(key,
true, dur);
1815 if (dur < 0) dur = 0;
1869 if (this.special !=
null) {
1871 if (effect !=
null) {
1882 for (String
id : commodities) {
1886 if (deficit < 0) deficit = 0f;
1893 if (mult < 0) mult = 0;
1894 if (mult > 1) mult = 1;
1907 if (commodities !=
null) {
1917 String totalStr = Strings.X + total;
1922 tooltip.
addPara(
"Ground defense strength: %s", opad, h, totalStr);
1924 public String getPercentValue(StatMod mod) {
1927 public String getMultValue(StatMod mod) {
1930 public Color getModColor(StatMod mod) {
1934 public String getFlatValue(StatMod mod) {
1936 if (mod.value >= 0)
return "+" + r;
1967 return "Make improvements...";
1990 this.improved =
null;
2003 boolean addedSomething =
false;
2005 String unit =
"unit";
2009 if (mode == ImprovementDescriptionMode.INDUSTRY_TOOLTIP) {
2018 addedSomething =
true;
2021 if (mode != ImprovementDescriptionMode.INDUSTRY_TOOLTIP) {
2031 info.
addPara(
"Each improvement made at a colony doubles the number of " +
2032 "" +
Misc.
STORY +
" points required to make an additional improvement.", initPad,
2034 addedSomething =
true;
2036 if (!addedSomething) {
2058 return "Improvements";
2066 if (bonus <= 0)
return;
2082 addImproveDesc(tooltip, ImprovementDescriptionMode.INDUSTRY_TOOLTIP);
2101 return marineTokens;
2115 boolean found =
false;
2120 if (
spec.getParams() ==
null ||
spec.getParams().isEmpty())
continue;
2122 for (String
id :
spec.getParams().split(
",")) {
2124 if (
id.equals(
getId())) {
2133 ArrayList<InstallableIndustryItemPlugin> list =
new ArrayList<InstallableIndustryItemPlugin>();
static SettingsAPI getSettings()
static boolean CODEX_TOOLTIP_MODE
static SectorAPI getSector()
MutableStat getQuantity()
static void addToIndustryTooltip(Industry ind, IndustryTooltipMode mode, TooltipMakerAPI tooltip, float width, boolean expanded)
void modifyFlatAlways(String source, float value, String desc)
void modifyFlat(String source, float value)
void applyMods(MutableStat other)
void unmodifyMult(String source)
void unmodifyFlat(String source)
void modifyMult(String source, float value)
void modifyMultAlways(String source, float value, String desc)
boolean reportPlayerAwareOfIndustry(String industryId, boolean withSave)
static SharedUnlockData get()
static boolean COLONY_DEBUG
float getBuildOrUpgradeProgress()
int getImproveProductionBonus()
boolean canImproveToIncreaseProduction()
void addImproveDesc(TooltipMakerAPI info, ImprovementDescriptionMode mode)
String getBuildOrUpgradeDaysText()
boolean isDemandLegal(CommodityOnMarketAPI com)
void applyBetaCoreModifiers()
IndustrySpecAPI getSpec()
static int DEMAND_REDUCTION
List< Pair< String, Integer > > getAllDeficit(String ... commodityIds)
List< InstallableIndustryItemPlugin > getInstallableItems()
RaidDangerLevel adjustCommodityDangerLevel(String commodityId, RaidDangerLevel level)
boolean isTooltipExpandable()
List< MutableCommodityQuantity > getAllSupply()
void setMarket(MarketAPI market)
void addInstalledItemsSection(IndustryTooltipMode mode, TooltipMakerAPI tooltip, boolean expanded)
void apply(boolean withIncomeUpdate)
boolean isAICoreId(String str)
void applyAICoreModifiers()
void applyBetaCoreSupplyAndDemandModifiers()
void supply(String modId, String commodityId, int quantity, String desc)
void applyIncomeAndUpkeep(float sizeOverride)
boolean canInstallAICores()
int getImproveStoryPoints()
Map< String, MutableCommodityQuantity > supply
void applyGammaCoreModifiers()
void notifyColonyRenamed()
String getBuildOrUpgradeProgressText()
void setDisrupted(float days)
void demand(int index, String commodityId, int quantity, String desc)
MutableStat getSupplyBonusFromOther()
String getImprovementsDescForModifiers()
void upgradeFinished(Industry previous)
MutableStat getSupplyBonus()
MutableCommodityQuantity getDemand(String id)
void addRightAfterDescriptionSection(TooltipMakerAPI tooltip, IndustryTooltipMode mode)
transient Boolean hasInstallableItems
void updateAICoreToSupplyAndDemandModifiers()
static String getDeficitText(String commodityId)
void supply(String commodityId, int quantity, String desc)
void createTooltip(IndustryTooltipMode mode, TooltipMakerAPI tooltip, boolean expanded)
void finishBuildingOrUpgrading()
List< SpecialItemData > getVisibleInstalledItems()
boolean wantsToUseSpecialItem(SpecialItemData data)
static float getSizeMult(float size)
void initWithParams(List< String > params)
boolean isAvailableToBuild()
transient MutableStat demandReductionFromOther
int getStabilityPenalty()
void applyAICoreToIncomeAndUpkeep()
void applyImproveModifiers()
void addStabilityPostDemandSection(TooltipMakerAPI tooltip, boolean hasDemand, IndustryTooltipMode mode)
void addAICoreSection(TooltipMakerAPI tooltip, String coreId, AICoreDescriptionMode mode)
List< Pair< String, Integer > > getAllDeficit()
void setBuildProgress(float buildProgress)
void applyAlphaCoreSupplyAndDemandModifiers()
String getUnavailableReason()
void addImprovedSection(IndustryTooltipMode mode, TooltipMakerAPI tooltip, boolean expanded)
void setDisrupted(float days, boolean useMax)
int adjustMarineTokensToRaidItem(String itemId, String data, int marineTokens)
void disruptionFinished()
boolean hasPostDemandSection(boolean hasDemand, IndustryTooltipMode mode)
void addAlphaCoreDescription(TooltipMakerAPI tooltip, AICoreDescriptionMode mode)
void updateSupplyAndDemandModifiers()
void supply(int index, String commodityId, int quantity, String desc)
void unmodifyStabilityWithBaseMod()
void advance(float amount)
void addPostDemandSection(TooltipMakerAPI tooltip, boolean hasDemand, IndustryTooltipMode mode)
static int SIZE_FOR_LARGE_IMAGE
void addUnknownCoreDescription(String coreId, TooltipMakerAPI tooltip, AICoreDescriptionMode mode)
void demand(String commodityId, int quantity)
String getModId(int index)
void modifyStabilityWithBaseMod()
String getImproveDialogTitle()
static void buildNextInQueue(MarketAPI market)
static int DEFAULT_IMPROVE_SUPPLY_BONUS
String getCanNotShutDownReason()
void setBuildCostOverride(float buildCostOverride)
boolean addNonAICoreInstalledItems(IndustryTooltipMode mode, TooltipMakerAPI tooltip, boolean expanded)
transient IndustryTooltipMode currTooltipMode
void applyAlphaCoreModifiers()
void setSpecialItem(SpecialItemData special)
void addAICoreSection(TooltipMakerAPI tooltip, AICoreDescriptionMode mode)
String getDescriptionOverride()
String getCargoTitleForGatheringPoint()
void addPostDescriptionSection(TooltipMakerAPI tooltip, IndustryTooltipMode mode)
void applyGammaCoreSupplyAndDemandModifiers()
static float getCommodityEconUnitMult(float size)
float getDeficitMult(String ... commodities)
void setHidden(boolean hidden)
CargoAPI generateCargoForGatheringPoint(Random random)
SpecialItemData getSpecialItem()
Pair< String, Integer > getStabilityAffectingDeficit()
void updateIncomeAndUpkeep()
CargoAPI getCargoForInteractionMode(MarketInteractionMode mode)
void init(String id, MarketAPI market)
MutableStat getDemandReduction()
void setImproved(boolean improved)
transient MutableStat supplyBonusFromOther
String getImproveSoundId()
void setAICoreId(String aiCoreId)
void demand(String modId, String commodityId, int quantity, String desc)
void addGammaCoreDescription(TooltipMakerAPI tooltip, AICoreDescriptionMode mode)
float getImproveBonusXP()
static final String BASE_VALUE_TEXT
void addGroundDefensesImpactSection(TooltipMakerAPI tooltip, float bonus, String ...commodities)
static int SIZE_FOR_SMALL_IMAGE
float getPatherInterest()
void supply(String commodityId, int quantity)
boolean isSupplyLegal(CommodityOnMarketAPI com)
void addPostUpkeepSection(TooltipMakerAPI tooltip, IndustryTooltipMode mode)
Map< String, MutableCommodityQuantity > demand
boolean showWhenUnavailable()
MutableStat getDemandReductionFromOther()
List< MutableCommodityQuantity > getAllDemand()
void notifyBeingRemoved(MarketInteractionMode mode, boolean forUpgrade)
MutableCommodityQuantity getSupply(String id)
void updateImprovementSupplyAndDemandModifiers()
String getNameForModifier()
String getImproveMenuText()
void applyNoAICoreModifiers()
transient IndustrySpecAPI spec
MutableStat demandReduction
int getBaseStabilityMod()
void addPostSupplySection(TooltipMakerAPI tooltip, boolean hasSupply, IndustryTooltipMode mode)
void demand(String commodityId, int quantity, String desc)
void sendBuildOrUpgradeMessage()
RaidDangerLevel adjustItemDangerLevel(String itemId, String data, RaidDangerLevel level)
Pair< String, Integer > getMaxDeficit(String ... commodityIds)
void applyDeficitToProduction(int index, Pair< String, Integer > deficit, String ... commodities)
Float getBuildCostOverride()
void addBetaCoreDescription(TooltipMakerAPI tooltip, AICoreDescriptionMode mode)
List< ConstructionQueueItem > getItems()
static Map< String, InstallableItemEffect > ITEM_EFFECTS
static final String SUPPLIES
static final String ALPHA_CORE
static final String BETA_CORE
static final String GAMMA_CORE
static final String TAG_PARENT
static final String TAG_STRUCTURE
static final String POPULATION
static final String TAG_INDUSTRY
static final String TAG_PATHER1
static final String TAG_PATHER8
static final String TAG_PATHER10
static final String TAG_PATHER6
static final String TAG_PATHER4
static final String TAG_PATHER2
static String STORY_POINT_SPEND_INDUSTRY
static final String DEMAND_REDUCTION_MOD
static final String SUPPLY_BONUS_MOD
static String getSoundStandardUpdate()
static final String BULLET
void setIcon(String icon)
void addLine(String text)
void setSound(String sound)
static String getIndustryEntryId(String industryId)
static Color getStoryOptionColor()
static Color getTextColor()
static String getDGSCredits(float num)
static String getWithDGS(float num)
static int getNumImprovedIndustries(MarketAPI market)
static Color getStoryDarkColor()
static String ucFirst(String str)
static Color getNegativeHighlightColor()
static CargoAPI getStorageCargo(MarketAPI market)
static float getRoundedValueFloat(float value)
static Color getBasePlayerColor()
static Color getGrayColor()
static int getNumIndustries(MarketAPI market)
static Color getHighlightColor()
static int getMaxIndustries(MarketAPI market)
static Color getPositiveHighlightColor()
static String getRoundedValue(float value)
SpecialItemSpecAPI getSpecialItemSpec(String itemId)
IndustrySpecAPI getIndustrySpec(String industryId)
CommoditySpecAPI getCommoditySpec(String commodityId)
float getFloat(String key)
List< SpecialItemSpecAPI > getAllSpecialItemSpecs()
float convertToDays(float realSeconds)
void addMessage(String text)
void addSpecial(SpecialItemData data, float quantity)
MutableValue getCredits()
void addCommodity(String commodityId, float quantity)
CampaignFleetAPI getPlayerFleet()
CampaignClockAPI getClock()
FactionAPI getPlayerFaction()
CampaignUIAPI getCampaignUI()
boolean isAvailableToBuild()
SpecialItemData getSpecialItem()
void addTransientImmigrationModifier(MarketImmigrationModifier mod)
Industry instantiateIndustry(String id)
CommodityOnMarketAPI getCommodityData(String commodityId)
MemoryAPI getMemoryWithoutUpdate()
void setSuppressedConditions(LinkedHashSet< String > suppressedConditions)
MutableStatWithTempMods getStability()
LinkedHashSet< String > getSuppressedConditions()
MutableStat getIncomeMult()
void removeIndustry(String id, MarketInteractionMode mode, boolean forUpgrade)
boolean hasIndustry(String id)
boolean hasTag(String tag)
List< Industry > getIndustries()
Industry getIndustry(String id)
void setRetainSuppressedConditionsSetWhenEmpty(Boolean retainSuppressedConditionsSetWhenEmpty)
void removeTransientImmigrationModifier(MarketImmigrationModifier mod)
ConstructionQueue getConstructionQueue()
SectorEntityToken getPrimaryEntity()
void addIndustry(String id)
MutableStat getUpkeepMult()
List< CommodityOnMarketAPI > getAllCommodities()
float getExpire(String key)
void set(String key, Object value)
boolean is(String key, Object value)
String performTokenReplacement(String ruleId, String text, SectorEntityToken entity, Map< String, MemoryAPI > memoryMap)
DynamicStatsAPI getDynamic()
MutableCharacterStatsAPI getStats()
List< String > getUnmetRequirements(Industry industry)
void unapply(Industry industry)
void apply(Industry industry)
void addItemDescription(Industry industry, TooltipMakerAPI text, SpecialItemData data, InstallableItemDescriptionMode mode)
boolean hasTag(String tag)
Industry getNewPluginInstance(MarketAPI market)
void setHighlight(int start, int end)
void setText(String text)
void setHighlightColors(Color ... colors)
float getValue(String id)