1package com.fs.starfarer.api.impl.campaign.submarkets;
3import java.util.HashSet;
4import java.util.Random;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.CampaignUIAPI.CoreUITradeMode;
9import com.fs.starfarer.api.campaign.CoreUIAPI;
10import com.fs.starfarer.api.campaign.FactionAPI.ShipPickMode;
11import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
12import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
13import com.fs.starfarer.api.impl.campaign.ids.Commodities;
14import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
15import com.fs.starfarer.api.impl.campaign.ids.Submarkets;
16import com.fs.starfarer.api.util.Highlights;
17import com.fs.starfarer.api.util.Misc;
34 boolean military = Misc.isMilitary(
market);
35 boolean hiddenBase =
market.getMemoryWithoutUpdate().getBoolean(MemFlags.HIDDEN_BASE_MEM_FLAG);
37 float extraShips = 0f;
39 if (military && hiddenBase && !
market.hasSubmarket(Submarkets.GENERIC_MILITARY)) {
46 int weapons = 5 + Math.max(0,
market.getSize() - 1) + (Misc.isMilitary(
market) ? 5 : 0);
47 int fighters = 1 + Math.max(0, (
market.getSize() - 3) / 2) + (Misc.isMilitary(
market) ? 2 : 0);
53 getCargo().getMothballedShips().clear();
55 float freighters = 10f;
56 CommodityOnMarketAPI com =
market.getCommodityData(Commodities.SHIPS);
57 freighters += com.getMaxSupply() * 2f;
58 if (freighters > 30) freighters = 30;
69 ShipPickMode.PRIORITY_THEN_ALL,
86 com =
market.getCommodityData(Commodities.FUEL);
87 tankers += com.getMaxSupply() * 3f;
88 if (tankers > 40) tankers = 40;
99 ShipPickMode.PRIORITY_THEN_ALL,
112 getCargo().getMothballedShips().clear();
119 return !
market.isIllegal(com);
135 limit *= 0.9f + 0.2f * random.nextFloat();
137 float sm =
market.getStabilityValue() / 10f;
138 limit *= (0.25f + 0.75f * sm);
140 if (limit < 0) limit = 0;
164 int available = com.getAvailable();
165 int production = com.getMaxSupply();
166 production = Math.min(production, available);
168 int demand = com.getMaxDemand();
169 int export = (int) Math.min(production, shippingGlobal);
171 int extra = available - Math.max(export, demand);
172 if (extra < 0) extra = 0;
176 int deficit = Math.max(0, demand - available);
178 float unit = com.getCommodity().getEconUnit();
180 int imports = available - production;
181 if (imports < 0) imports = 0;
193 if (limit < 0) limit = 0;
218 return PlayerEconomyImpactMode.PLAYER_SELL_ONLY;
230 if (ui.getTradeMode() == CoreUITradeMode.SNEAK) {
231 return "Requires: proper docking authorization (transponder on)";
233 return super.getTooltipAppendix(ui);
239 if (ui.getTradeMode() == CoreUITradeMode.SNEAK) {
241 if (appendix ==
null)
return null;
243 Highlights h =
new Highlights();
245 h.setColors(Misc.getNegativeHighlightColor());
248 return super.getTooltipAppendixHighlights(ui);
static SettingsAPI getSettings()
static SectorAPI getSector()
void pruneWeapons(float keepFraction)
boolean okToUpdateShipsAndWeapons()
void addShips(String factionId, float combat, float freighter, float tanker, float transport, float liner, float utility, Float qualityOverride, float qualityMod, ShipPickMode modeOverride, FactionDoctrineAPI doctrineOverride)
float sinceLastCargoUpdate
void addHullMods(int maxTier, int num)
void addFighters(int min, int max, int maxTier, WeightedRandomPicker< String > factionPicker)
void addAndRemoveStockpiledResources(float amount, boolean withShortageCountering, boolean withDecreaseToLimit, boolean withCargoUpdate)
void addWeapons(int min, int max, int maxTier, String factionId)
Highlights getTooltipAppendixHighlights(CoreUIAPI ui)
void init(SubmarketAPI submarket)
static float getBaseStockpileLimit(CommodityOnMarketAPI com)
static float ECON_UNIT_MULT_EXTRA
static Set< String > SPECIAL_COMMODITIES
static float ECON_UNIT_MULT_IMPORTS
PlayerEconomyImpactMode getPlayerEconomyImpactMode()
int getStockpileLimit(CommodityOnMarketAPI com)
static float ECON_UNIT_MULT_DEFICIT
static int getApproximateStockpileLimit(CommodityOnMarketAPI com)
void updateCargoPrePlayerInteraction()
boolean shouldHaveCommodity(CommodityOnMarketAPI com)
static float ECON_UNIT_MULT_PRODUCTION
String getTooltipAppendix(CoreUIAPI ui)
int getShippingCapacity(MarketAPI market, boolean inFaction)