1package com.fs.starfarer.api.campaign.impl.items;
4import java.util.ArrayList;
5import java.util.HashSet;
6import java.util.Iterator;
8import java.util.Random;
11import org.json.JSONArray;
12import org.json.JSONException;
13import org.json.JSONObject;
15import com.fs.starfarer.api.Global;
16import com.fs.starfarer.api.campaign.CargoStackAPI;
17import com.fs.starfarer.api.campaign.CargoTransferHandlerAPI;
18import com.fs.starfarer.api.campaign.econ.MarketAPI;
19import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
20import com.fs.starfarer.api.combat.ShipVariantAPI;
21import com.fs.starfarer.api.graphics.SpriteAPI;
22import com.fs.starfarer.api.impl.campaign.ids.Tags;
23import com.fs.starfarer.api.loading.Description;
24import com.fs.starfarer.api.loading.Description.Type;
25import com.fs.starfarer.api.loading.FighterWingSpecAPI;
26import com.fs.starfarer.api.ui.TooltipMakerAPI;
27import com.fs.starfarer.api.util.Misc;
28import com.fs.starfarer.api.util.WeightedRandomPicker;
32 protected FighterWingSpecAPI
wing;
44 List<String> result =
new ArrayList<String>();
45 result.add(
wing.getId());
63 return fighter.getHullSpec().getManufacturer();
69 public void render(
float x,
float y,
float w,
float h,
float alphaMult,
87 boolean known =
Global.
getSector().getPlayerFaction().knowsFighter(wingId);
92 bgColor = Misc.setAlpha(bgColor, 255);
94 alphaMult * mult, glowMult * 0.5f * mult,
false);
95 renderer.
renderShipWithCorners(wingId,
null, blX, blY, tlX, tlY, trX, trY, brX, brY,
96 alphaMult * mult, glowMult * 0.5f * mult, !known);
99 overlay.setColor(Color.green);
100 overlay.setColor(
Global.
getSector().getPlayerFaction().getBrightUIColor());
101 overlay.setAlphaMult(alphaMult);
102 overlay.setNormalBlend();
107 alphaMult * 0.5f, 0f,
false);
112 overlay.renderWithCorners(blX, blY, tlX, tlY, trX, trY, brX, brY);
116 public int getPrice(MarketAPI market, SubmarketAPI submarket) {
118 float base = super.getPrice(market, submarket);
121 return super.getPrice(market, submarket);
127 return wing.getWingName() +
" Blueprint";
129 return super.getName();
134 super.createTooltip(tooltip, expanded, transferHandler, stackSource);
139 Color h = Misc.getHighlightColor();
140 Color g = Misc.getGrayColor();
141 Color b = Misc.getButtonTextColor();
142 b = Misc.getPositiveHighlightColor();
145 boolean known =
Global.
getSector().getPlayerFaction().knowsFighter(wingId);
147 List<String> wings =
new ArrayList<String>();
152 tooltip.addPara(desc.getText1FirstPara(), opad);
154 addCostLabel(tooltip, opad, transferHandler, stackSource);
157 tooltip.addPara(
"Already known", g, opad);
159 tooltip.addPara(
"Right-click to learn", b, opad);
180 "" +
wing.getWingName() +
": blueprint already known");
185 "Acquired blueprint: " +
wing.getWingName() +
"");
192 if (params ==
null || params.isEmpty())
return null;
194 if (!params.startsWith(
"{")) {
197 JSONObject json =
new JSONObject(params);
199 int tier = json.optInt(
"tier", -1);
200 Set<String> tags =
new HashSet<String>();
201 if (json.has(
"tags")) {
202 JSONArray tagsArray = json.getJSONArray(
"tags");
203 for (
int i = 0; i < tagsArray.length(); i++) {
204 tags.add(tagsArray.getString(i));
215 Iterator<FighterWingSpecAPI> iter = specs.iterator();
216 while (iter.hasNext()) {
217 FighterWingSpecAPI curr = iter.next();
218 if (curr.hasTag(Tags.WING_NO_DROP)) {
224 iter = specs.iterator();
225 while (iter.hasNext()) {
226 FighterWingSpecAPI curr = iter.next();
227 if (curr.getTier() != tier) iter.remove();
231 if (!tags.isEmpty()) {
232 iter = specs.iterator();
233 while (iter.hasNext()) {
234 FighterWingSpecAPI curr = iter.next();
235 for (String tag : tags) {
236 boolean not = tag.startsWith(
"!");
237 tag = not ? tag.substring(1) : tag;
238 boolean has = curr.hasTag(tag);
247 WeightedRandomPicker<FighterWingSpecAPI> picker =
new WeightedRandomPicker<FighterWingSpecAPI>(random);
248 for (FighterWingSpecAPI
spec : specs) {
251 FighterWingSpecAPI pick = picker.pick();
static SettingsAPI getSettings()
static SoundPlayerAPI getSoundPlayer()
static SectorAPI getSector()
void addCostLabel(TooltipMakerAPI tooltip, float pad, CargoTransferHandlerAPI transferHandler, Object stackSource)
void addFighterList(TooltipMakerAPI tooltip, String title, List< String > wings, int max, float opad)
boolean hasRightClickAction()
boolean shouldRemoveOnRightClickAction()
void init(CargoStackAPI stack)
void render(float x, float y, float w, float h, float alphaMult, float glowMult, SpecialItemRendererAPI renderer)
String resolveDropParamsToSpecificItemData(String params, Random random)
int getPrice(MarketAPI market, SubmarketAPI submarket)
String pickFighterWing(int tier, Set< String > tags, Random random)
List< String > getProvidedFighters()
List< String > getProvidedShips()
List< String > getProvidedIndustries()
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource)
void performRightClickAction()
List< String > getProvidedWeapons()
Description getDescription(String id, Type type)
FighterWingSpecAPI getFighterWingSpec(String wingId)
SpriteAPI getSprite(String filename)
List< FighterWingSpecAPI > getAllFighterWingSpecs()
SoundAPI playUISound(String id, float pitch, float volume)
SpecialItemData getSpecialDataIfSpecial()
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 renderShipWithCorners(String hullOrWingId, Color bgColor, float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY, float alphaMult, float glowMult, boolean withSpotlight)