Starsector API
Loading...
Searching...
No Matches
GenericSpecialItemPlugin.java
Go to the documentation of this file.
1package com.fs.starfarer.api.campaign.impl.items;
2
3import java.awt.Color;
4import java.util.ArrayList;
5import java.util.List;
6
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.CargoTransferHandlerAPI;
9import com.fs.starfarer.api.campaign.SpecialItemData;
10import com.fs.starfarer.api.campaign.econ.Industry;
11import com.fs.starfarer.api.campaign.econ.InstallableIndustryItemPlugin.InstallableItemDescriptionMode;
12import com.fs.starfarer.api.impl.campaign.econ.impl.InstallableItemEffect;
13import com.fs.starfarer.api.impl.campaign.econ.impl.ItemEffectsRepo;
14import com.fs.starfarer.api.loading.IndustrySpecAPI;
15import com.fs.starfarer.api.ui.LabelAPI;
16import com.fs.starfarer.api.ui.TooltipMakerAPI;
17import com.fs.starfarer.api.util.Misc;
18
20
21 protected void addInstalledInSection(TooltipMakerAPI tooltip, float pad) {
22 String list = "";
23 String [] params = spec.getParams().split(",");
24 String [] array = new String[params.length];
25 int i = 0;
26 for (String curr : params) {
27 curr = curr.trim();
28 IndustrySpecAPI ind = Global.getSettings().getIndustrySpec(curr);
29 if (ind == null) continue;
30 list += ind.getName() + ", ";
31 array[i] = ind.getName();
32 i++;
33 }
34 if (!list.isEmpty()) {
35 list = list.substring(0, list.length() - 2);
36 tooltip.addPara(list, pad,
37 Misc.getGrayColor(), Misc.getBasePlayerColor(), array);
38 //Misc.getGrayColor(), Misc.getHighlightColor(), array);
39 //Misc.getGrayColor(), Misc.getTextColor(), array);
40 }
41 }
42
43 public static void addReqsSection(Industry industry, InstallableItemEffect effect, TooltipMakerAPI tooltip, boolean withRequiresText, float pad) {
44 List<String> reqs = effect.getRequirements(industry);
45 List<String> unmet = effect.getUnmetRequirements(industry);
46
47 if (reqs == null) reqs = new ArrayList<String>();
48 if (unmet == null) unmet = new ArrayList<String>();
49
50 Color [] hl = new Color[reqs.size()];
51
52 int i = 0;
53 String list = "";
54 for (String curr : reqs) {
55 list += curr + ", ";
56
57 if (unmet.contains(curr)) {
58 hl[i] = Misc.getNegativeHighlightColor();
59 } else {
60 hl[i] = Misc.getBasePlayerColor();
61 //hl[i] = Misc.getHighlightColor();
62 //hl[i] = Misc.getTextColor();
63 }
64 i++;
65 }
66 if (!list.isEmpty()) {
67 list = list.substring(0, list.length() - 2);
68 list = Misc.ucFirst(list);
69 reqs.set(0, Misc.ucFirst(reqs.get(0)));
70
71 float bulletWidth = 70f;
72 if (withRequiresText) {
73 tooltip.setBulletWidth(bulletWidth);
74 tooltip.setBulletColor(Misc.getGrayColor());
75 tooltip.setBulletedListMode("Requires:");
76 }
77
78 LabelAPI label = tooltip.addPara(list, Misc.getGrayColor(), pad);
79 label.setHighlightColors(hl);
80 label.setHighlight(reqs.toArray(new String[0]));
81
82 if (withRequiresText) {
83 tooltip.setBulletedListMode(null);
84 }
85 }
86
87 }
88
89 @Override
90 public void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource) {
91 //super.createTooltip(tooltip, expanded, transferHandler, stackSource, false);
92
93 float pad = 0f;
94 float opad = 10f;
95
96 tooltip.addTitle(getName());
97
98 LabelAPI design = Misc.addDesignTypePara(tooltip, getDesignType(), opad);
99
100 float bulletWidth = 70f;
101 if (design != null) {
102 bulletWidth = design.computeTextWidth("Design type: ");
103 }
104
105 InstallableItemEffect effect = ItemEffectsRepo.ITEM_EFFECTS.get(getId());
106 if (effect != null) {
107 tooltip.setBulletWidth(bulletWidth);
108 tooltip.setBulletColor(Misc.getGrayColor());
109
110 tooltip.setBulletedListMode("Installed in:");
111 addInstalledInSection(tooltip, opad);
112 tooltip.setBulletedListMode("Requires:");
113 addReqsSection(null, effect, tooltip, false, pad);
114
115 tooltip.setBulletedListMode(null);
116
117 if (!spec.getDesc().isEmpty()) {
118 Color c = Misc.getTextColor();
119 //if (useGray) c = Misc.getGrayColor();
120 tooltip.addPara(spec.getDesc(), c, opad);
121 }
122 effect.addItemDescription(null, tooltip, new SpecialItemData(getId(), null), InstallableItemDescriptionMode.CARGO_TOOLTIP);
123 } else {
124 if (!spec.getDesc().isEmpty()) {
125 Color c = Misc.getTextColor();
126 tooltip.addPara(spec.getDesc(), c, opad);
127 }
128 }
129
130
131 addCostLabel(tooltip, opad, transferHandler, stackSource);
132 }
133
134}
135
136
137
138
static SettingsAPI getSettings()
Definition Global.java:51
void addCostLabel(TooltipMakerAPI tooltip, float pad, CargoTransferHandlerAPI transferHandler, Object stackSource)
void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource)
static void addReqsSection(Industry industry, InstallableItemEffect effect, TooltipMakerAPI tooltip, boolean withRequiresText, float pad)
IndustrySpecAPI getIndustrySpec(String industryId)