1package com.fs.starfarer.api.campaign.impl.items;
3import java.util.HashSet;
4import java.util.Iterator;
6import 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.HullModEffect;
21import com.fs.starfarer.api.combat.ShipAPI.HullSize;
22import com.fs.starfarer.api.graphics.SpriteAPI;
23import com.fs.starfarer.api.impl.campaign.DebugFlags;
24import com.fs.starfarer.api.impl.campaign.ids.Tags;
25import com.fs.starfarer.api.loading.HullModSpecAPI;
26import com.fs.starfarer.api.ui.Alignment;
27import com.fs.starfarer.api.ui.TooltipMakerAPI;
28import com.fs.starfarer.api.util.Misc;
29import com.fs.starfarer.api.util.WeightedRandomPicker;
46 public void render(
float x,
float y,
float w,
float h,
float alphaMult,
135 sprite.
setAlphaMult(alphaMult * glowMult * 0.5f * mult);
145 renderer.
renderSchematicWithCorners(sprite,
null, blX, blY, tlX, tlY, trX, trY, brX, brY, alphaMult * 0.67f);
151 if (modSpec !=
null)
return (
int) modSpec.
getBaseValue();
152 return super.getPrice(market, submarket);
163 if (modSpec !=
null) {
198 HullSize size = HullSize.CAPITAL_SHIP;
200 final String [] params =
new String [] {
225 addCostLabel(tooltip, opad, transferHandler, stackSource);
233 tooltip.
addPara(
"Already known", g, opad);
236 tooltip.
addPara(
"Right-click to learn", b, opad);
242 return super.getTooltipWidth();
275 if (params ==
null || params.isEmpty())
return null;
278 JSONObject json =
new JSONObject(params);
280 int tier = json.optInt(
"tier", -1);
281 Set<String> tags =
new HashSet<String>();
282 if (json.has(
"tags")) {
283 JSONArray tagsArray = json.getJSONArray(
"tags");
284 for (
int i = 0; i < tagsArray.length(); i++) {
285 tags.add(tagsArray.getString(i));
291 Iterator<HullModSpecAPI> iter = specs.iterator();
292 while (iter.hasNext()) {
303 iter = specs.iterator();
304 while (iter.hasNext()) {
306 if (curr.
getTier() != tier) iter.remove();
310 if (!tags.isEmpty()) {
311 iter = specs.iterator();
312 while (iter.hasNext()) {
314 for (String tag : tags) {
315 boolean not = tag.startsWith(
"!");
316 tag = not ? tag.substring(1) : tag;
317 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 createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource)
int getPrice(MarketAPI market, SubmarketAPI submarket)
boolean isTooltipExpandable()
boolean shouldRemoveOnRightClickAction()
String resolveDropParamsToSpecificItemData(String params, Random random)
boolean hasRightClickAction()
void init(CargoStackAPI stack)
void render(float x, float y, float w, float h, float alphaMult, float glowMult, SpecialItemRendererAPI renderer)
void performRightClickAction()
static boolean ALLOW_KNOWN_HULLMOD_DROPS
static Color getButtonTextColor()
static Color getGrayColor()
static Color getHighlightColor()
static LabelAPI addDesignTypePara(TooltipMakerAPI tooltip, String design, float pad)
static Color getPositiveHighlightColor()
HullModSpecAPI getHullModSpec(String modId)
List< HullModSpecAPI > getAllHullModSpecs()
SpriteAPI getSprite(String filename)
SoundAPI playUISound(String id, float pitch, float volume)
MessageDisplayAPI getMessageDisplay()
SpecialItemData getSpecialDataIfSpecial()
boolean knowsHullMod(String id)
void addHullMod(String id)
boolean knowsHullMod(String modId)
void addMessage(String text)
FactionAPI getPlayerFaction()
CampaignUIAPI getCampaignUI()
CharacterDataAPI getCharacterData()
void renderSchematicWithCorners(SpriteAPI sprite, Color color, float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY, float alphaMult)
void renderScanlinesWithCorners(float blX, float blY, float tlX, float tlY, float trX, float trY, float brX, float brY, float alphaMult, boolean additive)
void addRequiredItemSection(TooltipMakerAPI tooltip, FleetMemberAPI member, ShipVariantAPI currentVariant, MarketAPI dockedAt, float width, boolean isForModSpec)
boolean hasSModEffectSection(HullSize hullSize, ShipAPI ship, boolean isForModSpec)
String getDescriptionParam(int index, HullSize hullSize)
boolean shouldAddDescriptionToTooltip(HullSize hullSize, ShipAPI ship, boolean isForModSpec)
void addPostDescriptionSection(TooltipMakerAPI tooltip, HullSize hullSize, ShipAPI ship, float width, boolean isForModSpec)
void addSModSection(TooltipMakerAPI tooltip, HullSize hullSize, ShipAPI ship, float width, boolean isForModSpec, boolean isForBuildInList)
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)
boolean isHiddenEverywhere()
String getDescription(HullSize size)
HullModEffect getEffect()