Starsector API
Loading...
Searching...
No Matches
IndustryBlueprintItemPlugin.java
Go to the documentation of this file.
1package com.fs.starfarer.api.campaign.impl.items;
2
3import java.util.ArrayList;
4import java.util.List;
5
6import java.awt.Color;
7
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CargoStackAPI;
10import com.fs.starfarer.api.campaign.CargoTransferHandlerAPI;
11import com.fs.starfarer.api.campaign.econ.MarketAPI;
12import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
13import com.fs.starfarer.api.graphics.SpriteAPI;
14import com.fs.starfarer.api.impl.SharedUnlockData;
15import com.fs.starfarer.api.impl.campaign.ids.Tags;
16import com.fs.starfarer.api.loading.IndustrySpecAPI;
17import com.fs.starfarer.api.ui.TooltipMakerAPI;
18import com.fs.starfarer.api.util.Misc;
19
21
23
24 @Override
29
30 public List<String> getProvidedFighters() {
31 return null;
32 }
33
34 public List<String> getProvidedShips() {
35 return null;
36 }
37
38 public List<String> getProvidedWeapons() {
39 return null;
40 }
41 public List<String> getProvidedIndustries() {
42 List<String> result = new ArrayList<String>();
43 result.add(industry.getId());
44 return result;
45 }
46
47
48 @Override
49 public void render(float x, float y, float w, float h, float alphaMult,
50 float glowMult, SpecialItemRendererAPI renderer) {
51 float cx = x + w/2f;
52 float cy = y + h/2f;
53
54 float blX = cx -25f;
55 float blY = cy -14f;
56 float tlX = cx -30f;
57 float tlY = cy +16f;
58 float trX = cx +24f;
59 float trY = cy +22f;
60 float brX = cx +30f;
61 float brY = cy -6f;
62
64
65 String industryId = stack.getSpecialDataIfSpecial().getData();
66 boolean known = Global.getSector().getPlayerFaction().knowsIndustry(industryId);
67
68 float mult = 1f;
69
70 sprite.setAlphaMult(alphaMult * mult);
71 sprite.setNormalBlend();
72 sprite.renderWithCorners(blX, blY, tlX, tlY, trX, trY, brX, brY);
73
74 if (glowMult > 0) {
75 sprite.setAlphaMult(alphaMult * glowMult * 0.5f * mult);
76 sprite.setAdditiveBlend();
77 sprite.renderWithCorners(blX, blY, tlX, tlY, trX, trY, brX, brY);
78 }
79
80 if (known) {
81 renderer.renderBGWithCorners(Color.black, blX, blY, tlX, tlY, trX, trY, brX, brY,
82 alphaMult * 0.5f, 0f, false);
83 }
84
85 renderer.renderScanlinesWithCorners(blX, blY, tlX, tlY, trX, trY, brX, brY, alphaMult, false);
86 }
87
88 @Override
89 public int getPrice(MarketAPI market, SubmarketAPI submarket) {
90 if (industry != null) {
91 float base = super.getPrice(market, submarket);
92 return (int)(base + industry.getCost() * getItemPriceMult());
93 }
94 return super.getPrice(market, submarket);
95 }
96
97 @Override
98 public String getName() {
99 if (industry != null) {
100 return industry.getName() + " Blueprint";
101 }
102 return super.getName();
103 }
104
105 @Override
106 public void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource) {
107 super.createTooltip(tooltip, expanded, transferHandler, stackSource);
108
109 // not needed, done in core code that calls this
110// if (industry.hasTag(Tags.CODEX_UNLOCKABLE)) {
111// SharedUnlockData.get().reportPlayerAwareOfIndustry(industry.getId(), true);
112// }
113
114 float pad = 3f;
115 float opad = 10f;
116 float small = 5f;
117 Color h = Misc.getHighlightColor();
118 Color g = Misc.getGrayColor();
119 Color b = Misc.getButtonTextColor();
121
122 String industryId = stack.getSpecialDataIfSpecial().getData();
123 boolean known = Global.getSector().getPlayerFaction().knowsIndustry(industryId);
124
125 tooltip.addPara(industry.getDesc(), opad);
126
127 addCostLabel(tooltip, opad, transferHandler, stackSource);
128
129 if (known) {
130 tooltip.addPara("Already known", g, opad);
131 } else {
132 tooltip.addPara("Right-click to learn", b, opad);
133 }
134 }
135
136 @Override
137 public boolean hasRightClickAction() {
138 return true;
139 }
140
141 @Override
143 String industryId = stack.getSpecialDataIfSpecial().getData();
144 return !Global.getSector().getPlayerFaction().knowsIndustry(industryId);
145 }
146
147 @Override
149 String industryId = stack.getSpecialDataIfSpecial().getData();
150
153 }
154
155 if (Global.getSector().getPlayerFaction().knowsIndustry(industryId)) {
157 "" + industry.getName() + ": blueprint already known");//,
158 } else {
159 Global.getSoundPlayer().playUISound("ui_acquired_blueprint", 1, 1);
162 "Acquired blueprint: " + industry.getName() + "");//,
163
164 }
165 }
166
167// @Override
168// public String resolveDropParamsToSpecificItemData(String params, Random random) throws JSONException {
169// if (params == null || params.isEmpty()) return null;
170//
171//
172// JSONObject json = new JSONObject(params);
173//
174// int tier = json.optInt("tier", -1);
175// Set<String> tags = new HashSet<String>();
176// if (json.has("tags")) {
177// JSONArray tagsArray = json.getJSONArray("tags");
178// for (int i = 0; i < tagsArray.length(); i++) {
179// tags.add(tagsArray.getString(i));
180// }
181// }
182//
183// return pickWeapon(tier, tags, random);
184// }
185//
186//
187// protected String pickWeapon(int tier, Set<String> tags, Random random) {
188// List<WeaponSpecAPI> specs = Global.getSettings().getAllWeaponSpecs();
189//
190// Iterator<WeaponSpecAPI> iter = specs.iterator();
191// while (iter.hasNext()) {
192// WeaponSpecAPI curr = iter.next();
193// if (curr.getAIHints().contains(AIHints.SYSTEM)) {
194// iter.remove();
195// }
196// }
197//
198// if (tier >= 0) {
199// iter = specs.iterator();
200// while (iter.hasNext()) {
201// WeaponSpecAPI curr = iter.next();
202// if (curr.getTier() != tier) iter.remove();
203// }
204// }
205//
206// if (!tags.isEmpty()) {
207// iter = specs.iterator();
208// while (iter.hasNext()) {
209// WeaponSpecAPI curr = iter.next();
210// for (String tag : tags) {
211// boolean not = tag.startsWith("!");
212// tag = not ? tag.substring(1) : tag;
213// boolean has = curr.hasTag(tag);
214// if (not == has) {
215// iter.remove();
216// break;
217// }
218// }
219// }
220// }
221//
222// WeightedRandomPicker<WeaponSpecAPI> picker = new WeightedRandomPicker<WeaponSpecAPI>(random);
223// for (WeaponSpecAPI spec : specs) {
224// picker.add(spec, 1f * spec.getRarity());
225// }
226// WeaponSpecAPI pick = picker.pick();
227// if (pick == null) {
228// return null;
229// } else {
230// return pick.getWeaponId();
231// }
232// }
233
234}
235
236
237
238
239
static SettingsAPI getSettings()
Definition Global.java:57
static SoundPlayerAPI getSoundPlayer()
Definition Global.java:49
static SectorAPI getSector()
Definition Global.java:65
void addCostLabel(TooltipMakerAPI tooltip, float pad, CargoTransferHandlerAPI transferHandler, Object stackSource)
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource)
void render(float x, float y, float w, float h, float alphaMult, float glowMult, SpecialItemRendererAPI renderer)
boolean reportPlayerAwareOfIndustry(String industryId, boolean withSave)
static Color getButtonTextColor()
Definition Misc.java:842
static Color getGrayColor()
Definition Misc.java:826
static Color getHighlightColor()
Definition Misc.java:792
static Color getPositiveHighlightColor()
Definition Misc.java:822
IndustrySpecAPI getIndustrySpec(String industryId)
SpriteAPI getSprite(String filename)
SoundAPI playUISound(String id, float pitch, float volume)
void addKnownIndustry(String industryId)
boolean knowsIndustry(String industryId)
void renderScanlinesWithCorners(float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY, float alphaMult, boolean additive)
void renderBGWithCorners(Color bgColor, float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY, float alphaMult, float glowMult, boolean additive)
void renderWithCorners(float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY)
LabelAPI addPara(String format, float pad, Color hl, String... highlights)