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