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.WeaponAPI.AIHints;
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.loading.WeaponSpecAPI;
25import com.fs.starfarer.api.ui.TooltipMakerAPI;
26import com.fs.starfarer.api.util.Misc;
27import com.fs.starfarer.api.util.WeightedRandomPicker;
49 List<String> result =
new ArrayList<String>();
58 public void render(
float x,
float y,
float w,
float h,
float alphaMult,
89 alphaMult * mult, glowMult * 0.5f * mult,
false);
94 alphaMult * mult, glowMult * 0.5f * mult, !known);
105 alphaMult * 0.5f, 0f,
false);
116 float base = super.getPrice(market, submarket);
119 return super.getPrice(market, submarket);
127 return super.getName();
140 super.createTooltip(tooltip, expanded, transferHandler, stackSource);
153 List<String> weapons =
new ArrayList<String>();
154 weapons.add(weaponId);
160 addCostLabel(tooltip, opad, transferHandler, stackSource);
163 tooltip.
addPara(
"Already known", g, opad);
165 tooltip.
addPara(
"Right-click to learn", b, opad);
198 if (params ==
null || params.isEmpty())
return null;
200 if (!params.startsWith(
"{")) {
204 JSONObject json =
new JSONObject(params);
206 int tier = json.optInt(
"tier", -1);
207 Set<String> tags =
new HashSet<String>();
208 if (json.has(
"tags")) {
209 JSONArray tagsArray = json.getJSONArray(
"tags");
210 for (
int i = 0; i < tagsArray.length(); i++) {
211 tags.add(tagsArray.getString(i));
219 protected String
pickWeapon(
int tier, Set<String> tags, Random random) {
222 Iterator<WeaponSpecAPI> iter = specs.iterator();
223 while (iter.hasNext()) {
225 if (curr.
getAIHints().contains(AIHints.SYSTEM)) {
231 iter = specs.iterator();
232 while (iter.hasNext()) {
234 if (curr.
getTier() != tier) iter.remove();
238 if (!tags.isEmpty()) {
239 iter = specs.iterator();
240 while (iter.hasNext()) {
242 for (String tag : tags) {
243 boolean not = tag.startsWith(
"!");
244 tag = not ? tag.substring(1) : tag;
245 boolean has = curr.
hasTag(tag);
static SettingsAPI getSettings()
static SoundPlayerAPI getSoundPlayer()
static SectorAPI getSector()
void addCostLabel(TooltipMakerAPI tooltip, float pad, CargoTransferHandlerAPI transferHandler, Object stackSource)
void addWeaponList(TooltipMakerAPI tooltip, String title, List< String > weapons, int max, float opad)
List< String > getProvidedWeapons()
String pickWeapon(int tier, Set< String > tags, Random random)
int getPrice(MarketAPI market, SubmarketAPI submarket)
void init(CargoStackAPI stack)
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource)
void performRightClickAction()
List< String > getProvidedShips()
String resolveDropParamsToSpecificItemData(String params, Random random)
void render(float x, float y, float w, float h, float alphaMult, float glowMult, SpecialItemRendererAPI renderer)
boolean shouldRemoveOnRightClickAction()
boolean hasRightClickAction()
List< String > getProvidedFighters()
List< String > getProvidedIndustries()
String getText1FirstPara()
static Color getButtonTextColor()
static Color setAlpha(Color color, int alpha)
static Color getGrayColor()
static Color getHighlightColor()
static Color getPositiveHighlightColor()
Description getDescription(String id, Type type)
List< WeaponSpecAPI > getAllWeaponSpecs()
WeaponSpecAPI getWeaponSpec(String weaponId)
SpriteAPI getSprite(String filename)
SoundAPI playUISound(String id, float pitch, float volume)
MessageDisplayAPI getMessageDisplay()
SpecialItemData getSpecialDataIfSpecial()
boolean knowsWeapon(String weaponId)
void addKnownWeapon(String weaponId, boolean setTimestamp)
void addMessage(String text)
FactionAPI getPlayerFaction()
CampaignUIAPI getCampaignUI()
void renderWeaponWithCorners(String weaponId, float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY, float alphaMult, float glowMult, boolean withSpotlight)
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 setColor(Color color)
void setAlphaMult(float alphaMult)
void renderWithCorners(float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY)
boolean hasTag(String tag)
EnumSet< WeaponAPI.AIHints > getAIHints()