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.ShipHullSpecAPI;
21import com.fs.starfarer.api.graphics.SpriteAPI;
22import com.fs.starfarer.api.loading.Description;
23import com.fs.starfarer.api.loading.Description.Type;
24import com.fs.starfarer.api.ui.TooltipMakerAPI;
25import com.fs.starfarer.api.util.Misc;
26import com.fs.starfarer.api.util.WeightedRandomPicker;
30 protected ShipHullSpecAPI
ship;
43 List<String> result =
new ArrayList<String>();
44 result.add(
ship.getHullId());
57 public void render(
float x,
float y,
float w,
float h,
float alphaMult,
73 boolean known =
Global.
getSector().getPlayerFaction().knowsShip(hullId);
79 bgColor = Misc.setAlpha(bgColor, 255);
83 alphaMult * mult, glowMult * 0.5f * mult,
false);
84 renderer.
renderShipWithCorners(hullId,
null, blX, blY, tlX, tlY, trX, trY, brX, brY,
85 alphaMult * mult, glowMult * 0.5f * mult, !known);
89 overlay.setColor(Color.green);
90 overlay.setColor(
Global.
getSector().getPlayerFaction().getBrightUIColor());
91 overlay.setAlphaMult(alphaMult);
92 overlay.setNormalBlend();
98 alphaMult * 0.5f, 0f,
false);
102 overlay.renderWithCorners(blX, blY, tlX, tlY, trX, trY, brX, brY);
106 public int getPrice(MarketAPI market, SubmarketAPI submarket) {
110 switch (
ship.getHullSize()) {
127 return super.getPrice(market, submarket);
139 return ship.getNameWithDesignationWithDashClass() +
" Blueprint";
141 return super.getName();
147 return ship.getManufacturer();
154 super.createTooltip(tooltip, expanded, transferHandler, stackSource);
159 Color h = Misc.getHighlightColor();
160 Color g = Misc.getGrayColor();
161 Color b = Misc.getButtonTextColor();
162 b = Misc.getPositiveHighlightColor();
166 boolean known =
Global.
getSector().getPlayerFaction().knowsShip(hullId);
168 List<String> hulls =
new ArrayList<String>();
170 addShipList(tooltip,
"Ship hulls:", hulls, 1, opad);
174 if (
ship.getDescriptionPrefix() !=
null) {
175 prefix =
ship.getDescriptionPrefix() +
"\n\n";
177 tooltip.addPara(prefix + desc.getText1FirstPara(), opad);
179 addCostLabel(tooltip, opad, transferHandler, stackSource);
182 tooltip.addPara(
"Already known", g, opad);
184 tooltip.addPara(
"Right-click to learn", b, opad);
205 "" +
ship.getNameWithDesignationWithDashClass() +
": blueprint already known");
211 "Acquired blueprint: " +
ship.getNameWithDesignationWithDashClass() +
"");
218 if (params ==
null || params.isEmpty())
return null;
220 if (!params.startsWith(
"{")) {
224 JSONObject json =
new JSONObject(params);
226 Set<String> tags =
new HashSet<String>();
227 if (json.has(
"tags")) {
228 JSONArray tagsArray = json.getJSONArray(
"tags");
229 for (
int i = 0; i < tagsArray.length(); i++) {
230 tags.add(tagsArray.getString(i));
238 public static String
pickShip(Set<String> tags, Random random) {
241 Iterator<ShipHullSpecAPI> iter = specs.iterator();
257 if (!tags.isEmpty()) {
258 iter = specs.iterator();
259 while (iter.hasNext()) {
260 ShipHullSpecAPI curr = iter.next();
261 for (String tag : tags) {
262 boolean not = tag.startsWith(
"!");
263 tag = not ? tag.substring(1) : tag;
264 boolean has = curr.hasTag(tag);
273 WeightedRandomPicker<ShipHullSpecAPI> picker =
new WeightedRandomPicker<ShipHullSpecAPI>(random);
274 for (ShipHullSpecAPI
spec : specs) {
277 ShipHullSpecAPI pick = picker.pick();
281 return pick.getHullId();
static SettingsAPI getSettings()
static SoundPlayerAPI getSoundPlayer()
static SectorAPI getSector()
void addCostLabel(TooltipMakerAPI tooltip, float pad, CargoTransferHandlerAPI transferHandler, Object stackSource)
void addShipList(TooltipMakerAPI tooltip, String title, List< String > hulls, int max, float opad)
List< String > getProvidedShips()
List< String > getProvidedWeapons()
void performRightClickAction()
boolean hasRightClickAction()
void init(CargoStackAPI stack)
int getPrice(MarketAPI market, SubmarketAPI submarket)
static String pickShip(Set< String > tags, Random random)
boolean shouldRemoveOnRightClickAction()
List< String > getProvidedIndustries()
String resolveDropParamsToSpecificItemData(String params, Random random)
List< String > getProvidedFighters()
void render(float x, float y, float w, float h, float alphaMult, float glowMult, SpecialItemRendererAPI renderer)
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource)
Description getDescription(String id, Type type)
ShipHullSpecAPI getHullSpec(String hullId)
float getFloat(String key)
List< ShipHullSpecAPI > getAllShipHullSpecs()
SpriteAPI getSprite(String filename)
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)