Starsector API
Loading...
Searching...
No Matches
GenericInstallableItemPlugin.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.econ.impl;
2
3import java.util.HashSet;
4import java.util.List;
5import java.util.Set;
6
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.CargoStackAPI;
9import com.fs.starfarer.api.campaign.SpecialItemData;
10import com.fs.starfarer.api.campaign.SpecialItemSpecAPI;
11import com.fs.starfarer.api.campaign.econ.Industry;
12import com.fs.starfarer.api.campaign.impl.items.GenericSpecialItemPlugin;
13import com.fs.starfarer.api.ui.TooltipMakerAPI;
14
16
17 protected Industry industry;
18
20 this.industry = industry;
21 }
22
23 @Override
24 public String getMenuItemTitle() {
25 if (getCurrentlyInstalledItemData() == null) {
26 return "Install item...";
27 }
28 return "Manage item...";
29 }
30
31 @Override
32 public String getUninstallButtonText() {
33 return "Uninstall item";
34 }
35
36
37 @Override
38 public boolean isInstallableItem(CargoStackAPI stack) {
39 if (!stack.isSpecialStack()) return false;
40
41 //String industryId = ItemEffectsRepo.ITEM_TO_INDUSTRY.get(stack.getSpecialDataIfSpecial().getId());
42// String industryId = stack.getPlugin().getSpec().getParams();
43// if (industryId == null || industryId.isEmpty() || !industryId.equals(industry.getId())) {
44// return false;
45// }
46
47 String [] industries = stack.getPlugin().getSpec().getParams().split(",");
48 Set<String> all = new HashSet<String>();
49 for (String ind: industries) all.add(ind.trim());
50 if (!all.contains(industry.getId())) return false;
51
52 return ItemEffectsRepo.ITEM_EFFECTS.containsKey(stack.getSpecialDataIfSpecial().getId());
53 }
54
55 @Override
59
60 @Override
64
65 @Override
67 return "No item currently installed";
68 }
69
70 @Override
71 public String getNoItemsAvailableText() {
72 return "No suitable items available";
73 }
74
75 @Override
77 return "No suitable items available in storage";
78 }
79
80 @Override
82 return "Select item to install for " + industry.getCurrentName();
83 }
84
85 public boolean canBeInstalled(SpecialItemData data) {
87 if (effect != null) {
88 //return effect.canBeInstalledIn(industry);
89 List<String> unmet = effect.getUnmetRequirements(industry);
90 return unmet == null || unmet.isEmpty();
91 }
92 return true;
93 }
94
95
96 @Override
98 InstallableItemDescriptionMode mode) {
100 if (effect != null) {
101 List<String> unmet = effect.getUnmetRequirements(industry);
102 boolean canInstall = unmet == null || unmet.isEmpty();
103 if (!canInstall) {
104 GenericSpecialItemPlugin.addReqsSection(industry, effect, text, true, 0f);
105 } else {
106 effect.addItemDescription(industry, text, data, mode);
107 }
108 }
109 }
110
111 @Override
113 return false;
114 }
115
116 @Override
117 public float getMenuItemTooltipWidth() {
118 return super.getMenuItemTooltipWidth();
119 }
120
121 @Override
122 public boolean hasMenuItemTooltip() {
123 return super.hasMenuItemTooltip();
124 }
125
126 @Override
127 public void createMenuItemTooltip(TooltipMakerAPI tooltip, boolean expanded) {
128 float pad = 3f;
129 float opad = 10f;
130
131// tooltip.addPara("A likely Domain-era item improving the colony's infrastructure. " +
132// "Only one such item may be installed at a colony at a time.", 0f);
133 tooltip.addPara("Certain Domain-era artifacts might be installed here to improve the colony. " +
134 "Only one such artifact may be installed at an industry at a time.", 0f);
135
137 if (data == null) {
138 tooltip.addPara(getNoItemCurrentlyInstalledText() + ".", opad);
139 } else {
141// effect.addItemDescription(industry, tooltip, data, InstallableItemDescriptionMode.INDUSTRY_MENU_TOOLTIP);
142
144 TooltipMakerAPI text = tooltip.beginImageWithText(spec.getIconName(), 48);
145 effect.addItemDescription(industry, text, data, InstallableItemDescriptionMode.INDUSTRY_MENU_TOOLTIP);
146 tooltip.addImageWithText(opad);
147 }
148 }
149
150
151}
152
153
154
155
156
157
158
159
160
161
static SettingsAPI getSettings()
Definition Global.java:57
static void addReqsSection(Industry industry, InstallableItemEffect effect, TooltipMakerAPI tooltip, boolean withRequiresText, float pad)
void addItemDescription(TooltipMakerAPI text, SpecialItemData data, InstallableItemDescriptionMode mode)
static Map< String, InstallableItemEffect > ITEM_EFFECTS
SpecialItemSpecAPI getSpecialItemSpec(String itemId)
void setSpecialItem(SpecialItemData special)
void addItemDescription(Industry industry, TooltipMakerAPI text, SpecialItemData data, InstallableItemDescriptionMode mode)
LabelAPI addPara(String format, float pad, Color hl, String... highlights)
TooltipMakerAPI beginImageWithText(String spriteName, float imageHeight)
UIPanelAPI addImageWithText(float pad)