Starsector API
Loading...
Searching...
No Matches
Mining.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.econ.impl;
2
3import java.awt.Color;
4
5import com.fs.starfarer.api.Global;
6import com.fs.starfarer.api.campaign.PlanetAPI;
7import com.fs.starfarer.api.campaign.SpecialItemData;
8import com.fs.starfarer.api.campaign.econ.MarketAPI;
9import com.fs.starfarer.api.campaign.econ.MarketConditionAPI;
10import com.fs.starfarer.api.campaign.econ.MarketImmigrationModifier;
11import com.fs.starfarer.api.impl.campaign.econ.ResourceDepositsCondition;
12import com.fs.starfarer.api.impl.campaign.ids.Commodities;
13import com.fs.starfarer.api.impl.campaign.ids.Items;
14import com.fs.starfarer.api.impl.campaign.population.PopulationComposition;
15import com.fs.starfarer.api.ui.TooltipMakerAPI;
16import com.fs.starfarer.api.util.Misc;
17import com.fs.starfarer.api.util.Pair;
18
19
20public class Mining extends BaseIndustry implements MarketImmigrationModifier{
21
22 public void apply() {
23 super.apply(true);
24
25 int size = market.getSize();
26
29
31 applyDeficitToProduction(0, deficit,
36
37 if (!isFunctional()) {
38 supply.clear();
39 }
40 }
41
42
43 @Override
44 public void unapply() {
45 super.unapply();
46 }
47
48 protected boolean hasPostDemandSection(boolean hasDemand, IndustryTooltipMode mode) {
50 if (deficit.two <= 0) return false;
51 //return mode == IndustryTooltipMode.NORMAL && isFunctional();
52 return mode != IndustryTooltipMode.NORMAL || isFunctional();
53 }
54
55 @Override
56 protected void addPostDemandSection(TooltipMakerAPI tooltip, boolean hasDemand, IndustryTooltipMode mode) {
57 //if (mode == IndustryTooltipMode.NORMAL && isFunctional()) {
58 if (mode != IndustryTooltipMode.NORMAL || isFunctional()) {
59 Color h = Misc.getHighlightColor();
60 float opad = 10f;
61 float pad = 3f;
62
64 if (deficit.two > 0) {
65 tooltip.addPara(getDeficitText(Commodities.DRUGS) + ": %s units. Reduced colony growth.", pad, h, "" + deficit.two);
66 }
67 }
68 }
69
70
71 @Override
72 public boolean isAvailableToBuild() {
73 if (!super.isAvailableToBuild()) return false;
74
76 String commodity = ResourceDepositsCondition.COMMODITY.get(mc.getId());
77 if (commodity != null) {
78 String industry = ResourceDepositsCondition.INDUSTRY.get(commodity);
79 if (getId().equals(industry)) return true;
80 }
81 }
82 return false;
83 }
84
85 @Override
86 public String getUnavailableReason() {
87 if (!super.isAvailableToBuild()) return super.getUnavailableReason();
88
89 return "Requires resource deposits";
90 }
91
94 if (deficit.two > 0) {
95 incoming.getWeight().modifyFlat(getModId(), -deficit.two, "Mining: drug shortage");
96 }
97 }
98
99 @Override
100 public String getCurrentImage() {
101 float size = market.getSize();
103 return Global.getSettings().getSpriteName("industry", "mining_gas_giant");
104 }
105 if (size <= SIZE_FOR_SMALL_IMAGE) {
106 return Global.getSettings().getSpriteName("industry", "mining_low");
107 }
108 return super.getCurrentImage();
109 }
110
111 public float getPatherInterest() {
112 return 1f + super.getPatherInterest();
113 }
114
115 @Override
116 protected boolean canImproveToIncreaseProduction() {
117 return true;
118 }
119
120
121
122 public void applyVisuals(PlanetAPI planet) {
123 if (planet == null) return;
124 planet.getSpec().setShieldTexture2(Global.getSettings().getSpriteName("industry", "plasma_net_texture"));
125 planet.getSpec().setShieldThickness2(0.15f);
126 //planet.getSpec().setShieldColor2(new Color(255,255,255,175));
127 planet.getSpec().setShieldColor2(new Color(255,255,255,255));
128 planet.applySpecChanges();
130 }
131
132 public void unapplyVisuals(PlanetAPI planet) {
133 if (planet == null) return;
134 planet.getSpec().setShieldTexture2(null);
135 planet.getSpec().setShieldThickness2(0f);
136 planet.getSpec().setShieldColor2(null);
137 planet.applySpecChanges();
138 shownPlasmaNetVisuals = false;
139 }
140
141 protected boolean shownPlasmaNetVisuals = false;
142
143 @Override
145 super.setSpecialItem(special);
146
147 if (shownPlasmaNetVisuals && (special == null || !special.getId().equals(Items.PLASMA_DYNAMO))) {
149 }
150
151 if (special != null && special.getId().equals(Items.PLASMA_DYNAMO)) {
153 }
154 }
155
156
157
158}
159
160
161
162
163
static SettingsAPI getSettings()
Definition Global.java:57
void modifyFlat(String source, float value)
Map< String, MutableCommodityQuantity > supply
Map< String, MutableCommodityQuantity > demand
Pair< String, Integer > getMaxDeficit(String ... commodityIds)
void applyDeficitToProduction(int index, Pair< String, Integer > deficit, String ... commodities)
boolean hasPostDemandSection(boolean hasDemand, IndustryTooltipMode mode)
Definition Mining.java:48
void modifyIncoming(MarketAPI market, PopulationComposition incoming)
Definition Mining.java:92
void addPostDemandSection(TooltipMakerAPI tooltip, boolean hasDemand, IndustryTooltipMode mode)
Definition Mining.java:56
void setSpecialItem(SpecialItemData special)
Definition Mining.java:144
static Color getHighlightColor()
Definition Misc.java:792
String getSpriteName(String category, String id)
void setShieldThickness2(float shieldThickness2)
void setShieldColor2(Color shieldColor2)
void setShieldTexture2(String shieldTexture2)
List< MarketConditionAPI > getConditions()
LabelAPI addPara(String format, float pad, Color hl, String... highlights)