1package com.fs.starfarer.api.impl.campaign.intel.events;
4import java.util.ArrayList;
5import java.util.LinkedHashSet;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.campaign.FactionAPI;
11import com.fs.starfarer.api.campaign.StarSystemAPI;
12import com.fs.starfarer.api.campaign.econ.CommodityOnMarketAPI;
13import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
14import com.fs.starfarer.api.campaign.econ.MarketAPI;
15import com.fs.starfarer.api.impl.campaign.ids.Commodities;
16import com.fs.starfarer.api.impl.campaign.ids.Factions;
17import com.fs.starfarer.api.ui.Alignment;
18import com.fs.starfarer.api.ui.MapParams;
19import com.fs.starfarer.api.ui.TooltipMakerAPI;
20import com.fs.starfarer.api.ui.TooltipMakerAPI.TooltipCreator;
21import com.fs.starfarer.api.ui.UIPanelAPI;
22import com.fs.starfarer.api.util.Misc;
48 public static class CompetitorData {
49 public String commodityId;
51 public int factionProdTotal;
52 public int factionMaxProd;
53 public int competitorProdTotal;
54 public int competitorMaxProd;
55 public int competitorMaxMarketSize;
56 public int allProdTotal;
57 public List<MarketAPI> factionProducers =
new ArrayList<MarketAPI>();
58 public List<MarketAPI> competitorProducers =
new ArrayList<MarketAPI>();
60 public CompetitorData(String commodityId) {
61 this.commodityId = commodityId;
66 return (
int) Math.round(competitorMaxProd * progMult);
72 CompetitorData data =
new CompetitorData(commodityId);
76 if (com ==
null)
continue;
79 if (prod <= 0)
continue;
81 if (factionId.equals(market.getFactionId())) {
82 data.factionProdTotal += prod;
83 data.factionProducers.add(market);
84 data.factionMaxProd = Math.max(data.factionMaxProd, prod);
85 }
else if (competitorId.equals(market.getFactionId())) {
86 data.competitorProdTotal += prod;
87 data.competitorMaxProd = Math.max(data.competitorMaxProd, prod);
88 data.competitorProducers.add(market);
90 data.competitorMaxMarketSize = Math.max(data.competitorMaxMarketSize, market.getSize());
93 data.allProdTotal += prod;
102 Set<String> commodities =
new LinkedHashSet<String>();
104 if (!factionId.equals(market.getFactionId()))
continue;
107 if (com.isPersonnel())
continue;
111 int prod = com.getMaxSupply();
114 commodities.add(com.getId());
119 List<CompetitorData> result =
new ArrayList<CompetitorData>();
121 for (String commodityId : commodities) {
143 public void createTooltip(
TooltipMakerAPI tooltip,
boolean expanded, Object tooltipParam) {
149 tooltip.
addPara(
"Your colony production of certain commodities that the Tri-Tachyon corporation "
150 +
"has an interest in is high enough "
151 +
"to be viewed as competition.", 0f);
161 tooltip.
beginTable(player, 20f,
"Commodity", getTooltipWidth(tooltipParam) - 150f,
"Production", 150f);
162 for (
final CompetitorData data : comp) {
169 tooltip.
addPara(
"Event progress is based on the maximum production of each commodity. "
170 +
"%s below %s per colony, or reducing the scope of the competition to a single commodity,"
171 +
" should be enough to divert "
172 +
"Tri-Tachyon's attention.", opad,
174 "Reducing production levels",
178 tooltip.
addPara(
"%s are also possible.", opad,
179 h,
"Reciprocal solutions");
182 if (system !=
null) {
183 tooltip.
addPara(
"The Tri-Tachyon Corporation's base of power is in the " +
189 float height = Math.round(width / 1.6f);
211 if (comp.size() <= 1)
return 0;
213 for (CompetitorData data : comp) {
225 return "Competing exports";
234 for (CompetitorData data : comp) {
235 for (
MarketAPI market : data.competitorProducers) {
245 mag = Math.round(mag * 100f) / 100f;
static SettingsAPI getSettings()
static SectorAPI getSector()
static final String HEAVY_MACHINERY
static final String LUXURY_GOODS
static final String SUPPLIES
static final String VOLATILES
static final String SHIP_WEAPONS
static final String ORGANS
static final String RARE_METALS
static final String ORGANICS
static final String SHIPS
static final String RARE_ORE
static final String HAND_WEAPONS
static final String DRUGS
static final String TRITACHYON
static final String PLAYER
HostileActivityEventIntel intel
static boolean isDealtWithMercAttack()
static StarSystemAPI getPrimaryTriTachyonSystem()
static float DEALT_WITH_MERC_PROGRESS_MULT
static void addDealtSectionToTooltip(TooltipMakerAPI tooltip, float opad)
static boolean isPlayerCounterRaidedTriTach()
static CompetitorData computeCompetitorData(String factionId, String competitorId, String commodityId)
static List< CompetitorData > computePlayerCompetitionData()
static int MIN_TRITACH_PRODUCTION
TooltipCreator getTooltip()
TriTachyonStandardActivityCause(HostileActivityEventIntel intel)
static Set< String > COMPETING_COMMODITIES
float getMagnitudeContribution(StarSystemAPI system)
static int MIN_COMPETITOR_MARKET_SIZE
static int MIN_COMPETITOR_PRODUCTION
static float PROD_PROGRESS_MULT
void showSystem(StarSystemAPI system)
void positionToShowAllMarkersAndSystems(boolean showPlayerFleet, float heightOnScreen)
static Color getTextColor()
static String ucFirst(String str)
static Color getHighlightColor()
CommoditySpecAPI getCommoditySpec(String commodityId)
float getFloat(String key)
String getNameWithLowercaseType()
String getNameWithLowercaseTypeShort()
FactionAPI getFaction(String factionId)
List< MarketAPI > getMarketsCopy()
LocationAPI getContainingLocation()
CommodityOnMarketAPI getCommodityData(String commodityId)