1package com.fs.starfarer.api.campaign.impl.items;
3import java.util.ArrayList;
5import java.util.Random;
9import org.json.JSONException;
11import com.fs.starfarer.api.Global;
12import com.fs.starfarer.api.campaign.CargoStackAPI;
13import com.fs.starfarer.api.campaign.CargoTransferHandlerAPI;
14import com.fs.starfarer.api.campaign.SpecialItemPlugin;
15import com.fs.starfarer.api.campaign.SpecialItemSpecAPI;
16import com.fs.starfarer.api.campaign.SubmarketPlugin.TransferAction;
17import com.fs.starfarer.api.campaign.econ.MarketAPI;
18import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
19import com.fs.starfarer.api.combat.ShipHullSpecAPI;
20import com.fs.starfarer.api.impl.campaign.ids.Tags;
21import com.fs.starfarer.api.loading.FighterWingSpecAPI;
22import com.fs.starfarer.api.loading.WeaponSpecAPI;
23import com.fs.starfarer.api.ui.LabelAPI;
24import com.fs.starfarer.api.ui.TooltipMakerAPI;
25import com.fs.starfarer.api.util.Highlights;
26import com.fs.starfarer.api.util.Misc;
64 boolean useGray =
true;
68 createTooltip(tooltip, expanded, transferHandler, stackSource, useGray);
92 addCostLabel(tooltip, opad, transferHandler, stackSource);
124 if (
stack ==
null)
return;
138 if (data.highlights !=
null) {
145 public static class ItemCostLabelData {
152 String highlight =
null;
155 TransferAction action = TransferAction.PLAYER_BUY;
156 if (transferHandler !=
null && stackSource == transferHandler.
getManifestOne()) {
157 action = TransferAction.PLAYER_SELL;
164 text =
"Can not remove item";
169 ItemCostLabelData data =
new ItemCostLabelData();
171 data.highlights = highlights;
187 if (stackSource !=
null && transferHandler !=
null && !transferHandler.
isNoCost()) {
209 if (highlights ==
null) {
215 ItemCostLabelData data =
new ItemCostLabelData();
217 data.highlights = highlights;
229 protected static interface BlueprintLister {
230 boolean isKnown(String
id);
231 String getNoun(
int num);
237 public boolean isKnown(String
id) {
241 public String getNoun(
int num) {
242 if (num == 1)
return "hull";
245 public String
getName(String
id) {
247 return spec.getNameWithDesignationWithDashClass();
254 public boolean isKnown(String
id) {
258 public String getNoun(
int num) {
259 if (num == 1)
return "weapon";
262 public String
getName(String
id) {
264 return spec.getWeaponName();
271 public boolean isKnown(String
id) {
275 public String getNoun(
int num) {
276 if (num == 1)
return "fighter LPC";
277 return "fighter LPCs";
279 public String
getName(String
id) {
281 return spec.getWingName();
287 BlueprintLister lister) {
304 int left = ids.size();
306 List<String> copy =
new ArrayList<String>();
307 for (String
id : ids) {
308 if (!lister.isKnown(
id)) copy.add(
id);
310 for (String
id : ids) {
311 if (lister.isKnown(
id)) copy.add(
id);
315 for (String
id : ids) {
316 boolean known = lister.isKnown(
id);
319 tooltip.
addPara(tab + lister.getName(
id) +
" (known)", g, pad);
321 tooltip.
addPara(tab + lister.getName(
id), b, pad);
325 if (ids.size() - left >= max - 1)
break;
328 tooltip.
addPara(tab +
"None", pad);
331 String noun = lister.getNoun(left);
static SettingsAPI getSettings()
static boolean CODEX_TOOLTIP_MODE
static SectorAPI getSector()
ItemCostLabelData getCostLabelData(CargoStackAPI stack, CargoTransferHandlerAPI transferHandler, Object stackSource)
void addCostLabel(TooltipMakerAPI tooltip, float pad, CargoTransferHandlerAPI transferHandler, Object stackSource)
void performRightClickAction(RightClickActionHelper helper)
void addWeaponList(TooltipMakerAPI tooltip, String title, List< String > weapons, int max, float opad)
SpecialItemSpecAPI getSpec()
int getPrice(MarketAPI market, SubmarketAPI submarket)
void addBlueprintList(TooltipMakerAPI tooltip, String title, List< String > ids, int max, float opad, BlueprintLister lister)
void addShipList(TooltipMakerAPI tooltip, String title, List< String > hulls, int max, float opad)
boolean hasRightClickAction()
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource, boolean useGray)
String resolveDropParamsToSpecificItemData(String params, Random random)
void init(CargoStackAPI stack)
boolean shouldRemoveOnRightClickAction()
boolean isTooltipExpandable()
void performRightClickAction()
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource)
void addFighterList(TooltipMakerAPI tooltip, String title, List< String > wings, int max, float opad)
void render(float x, float y, float w, float h, float alphaMult, float glowMult, SpecialItemRendererAPI renderer)
void setText(String ... text)
void setColors(Color ... colors)
void append(String str, Color color)
static Color getTextColor()
static String getDGSCredits(float num)
static Color getButtonTextColor()
static Color getNegativeHighlightColor()
static Color getGrayColor()
static Color getHighlightColor()
static LabelAPI addDesignTypePara(TooltipMakerAPI tooltip, String design, float pad)
SpecialItemSpecAPI getSpecialItemSpec(String itemId)
ShipHullSpecAPI getHullSpec(String hullId)
float getFloat(String key)
FighterWingSpecAPI getFighterWingSpec(String wingId)
WeaponSpecAPI getWeaponSpec(String weaponId)
SpecialItemSpecAPI getSpecialItemSpecIfSpecial()
int getBaseValuePerUnit()
float computeCurrentSingleItemSellCost(CargoStackAPI stack)
float computeCurrentSingleItemBuyCost(CargoStackAPI stack)
SubmarketAPI getSubmarketTradedWith()
boolean knowsWeapon(String weaponId)
boolean knowsFighter(String wingId)
boolean knowsShip(String hullId)
FactionAPI getPlayerFaction()
boolean hasTag(String tag)
String getIllegalTransferText(CargoStackAPI stack, TransferAction action)
Highlights getIllegalTransferTextHighlights(CargoStackAPI stack, TransferAction action)
boolean isIllegalOnSubmarket(CargoStackAPI stack, TransferAction action)
SubmarketPlugin getPlugin()
void setHighlight(int start, int end)
void setHighlightColors(Color ... colors)