Starsector API
Loading...
Searching...
No Matches
FoodShortage.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.econ;
2
3import java.awt.Color;
4import java.util.ArrayList;
5import java.util.List;
6import java.util.Map;
7
8import com.fs.starfarer.api.impl.campaign.events.FoodShortageEvent;
9import com.fs.starfarer.api.impl.campaign.ids.Commodities;
10import com.fs.starfarer.api.impl.campaign.ids.Stats;
11import com.fs.starfarer.api.util.Misc;
12
14
15 private FoodShortageEvent event = null;
16
17
18 public FoodShortage() {
19 }
20
21 public void apply(String id) {
22 market.getStability().modifyFlat(id, -1f * event.getStabilityImpact(), "Food shortage");
23
24 String sellId = Stats.getPlayerSellRepImpactMultId(Commodities.FOOD);
25 market.getStats().getDynamic().getStat(sellId).modifyMult(id, 4f);
26 }
27
28 public void unapply(String id) {
29 market.getCommodityData(Commodities.FOOD).getPlayerSupplyPriceMod().unmodify(id);
30 market.getStability().unmodify(id);
31
32 String sellId = Stats.getPlayerSellRepImpactMultId(Commodities.FOOD);
33 market.getStats().getDynamic().getStat(sellId).unmodify(id);
34 }
35
36
37 public List<String> getRelatedCommodities() {
38 return event.getRelatedCommodities();
39 }
40
41 @Override
42 public void setParam(Object param) {
43 event = (FoodShortageEvent) param;
44 }
45
46
47 public Map<String, String> getTokenReplacements() {
48 // LinkedHashMap because order matters in getHighlights()
49 //Map<String, String> tokens = new LinkedHashMap<String, String>();
50 Map<String, String> tokens = super.getTokenReplacements();
51
52 int penalty = (int) event.getStabilityImpact();
53 tokens.put("$stabilityPenalty", "" + penalty);
54
55 //int increase = (int) ((event.getFoodPriceFlat() - 1f) * 100f);
56 //tokens.put("$foodPriceIncrease", "" + increase + "%");
57 //tokens.put("$foodPriceIncrease", "~" + (int) Misc.getRounded(event.getFoodPriceFlat()) + Strings.C);
58
59 int remaining = (int) Misc.getRounded(event.getRemainingFoodToMeetShortage());
60 tokens.put("$neededFood", "" + remaining);
61
62 return tokens;
63 }
64
65 @Override
66 public String[] getHighlights() {
67 List<String> highlights = new ArrayList<String>();
68 //addTokensToList(highlights, "$stabilityPenalty", "$foodPriceIncrease", "$neededFood");
69 addTokensToList(highlights, "$stabilityPenalty", "$neededFood");
70 return highlights.toArray(new String [0]);
71 //return new String[] {"" + (int) event.getStabilityImpact() };
72 }
73
74 @Override
75 public Color[] getHighlightColors() {
76 return super.getHighlightColors();
77 }
78
79 @Override
80 public boolean isTransient() {
81 return false;
82 }
83
84}