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
56 public SpecialItemData getCurrentlyInstalledItemData() {
57 return industry.getSpecialItem();
58 }
59
60 @Override
61 public void setCurrentlyInstalledItemData(SpecialItemData data) {
62 industry.setSpecialItem(data);
63 }
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) {
86 InstallableItemEffect effect = ItemEffectsRepo.ITEM_EFFECTS.get(data.getId());
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
97 public void addItemDescription(TooltipMakerAPI text, SpecialItemData data,
98 InstallableItemDescriptionMode mode) {
99 InstallableItemEffect effect = ItemEffectsRepo.ITEM_EFFECTS.get(data.getId());
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
136 SpecialItemData data = industry.getSpecialItem();
137 if (data == null) {
138 tooltip.addPara(getNoItemCurrentlyInstalledText() + ".", opad);
139 } else {
140 InstallableItemEffect effect = ItemEffectsRepo.ITEM_EFFECTS.get(data.getId());
141// effect.addItemDescription(industry, tooltip, data, InstallableItemDescriptionMode.INDUSTRY_MENU_TOOLTIP);
142
143 SpecialItemSpecAPI spec = Global.getSettings().getSpecialItemSpec(data.getId());
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:51
void addItemDescription(TooltipMakerAPI text, SpecialItemData data, InstallableItemDescriptionMode mode)
static Map< String, InstallableItemEffect > ITEM_EFFECTS
SpecialItemSpecAPI getSpecialItemSpec(String itemId)
void addItemDescription(Industry industry, TooltipMakerAPI text, SpecialItemData data, InstallableItemDescriptionMode mode)