Starsector API
Loading...
Searching...
No Matches
AddRemoveAnyItem.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.util.List;
4import java.util.Map;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CargoAPI;
8import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
9import com.fs.starfarer.api.campaign.InteractionDialogAPI;
10import com.fs.starfarer.api.campaign.SpecialItemData;
11import com.fs.starfarer.api.campaign.TextPanelAPI;
12import com.fs.starfarer.api.campaign.rules.MemoryAPI;
13import com.fs.starfarer.api.util.Misc.Token;
14
29public class AddRemoveAnyItem extends BaseCommandPlugin {
30
31 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
32 if (dialog == null) return false;
33
34 String typeStr = params.get(0).getString(memoryMap);
35 CargoItemType type = Enum.valueOf(CargoItemType.class, typeStr);
36
37 String id = params.get(1).getString(memoryMap);
38 String param = null;
39 int q = 1;
40 if (type != CargoItemType.SPECIAL) {
41 q = params.get(2).getInt(memoryMap);
42 } else {
43 if (params.size() <= 3) {
44 q = params.get(2).getInt(memoryMap);
45 } else if (params.size() >= 4) {
46 param = params.get(2).getString(memoryMap);
47 q = params.get(3).getInt(memoryMap);
48 }
49 }
50
51 TextPanelAPI text = dialog.getTextPanel();
52 CargoAPI cargo = Global.getSector().getPlayerFleet().getCargo();
53
54 if (type == CargoItemType.RESOURCES) {
55 if (q > 0) {
56 cargo.addCommodity(id, q);
58 } else
59 if (q < 0) {
60 cargo.removeCommodity(id, -q);
62 }
63 return true;
64 }
65 if (type == CargoItemType.FIGHTER_CHIP) {
66 if (q > 0) {
67 cargo.addFighters(id, q);
69 } else
70 if (q < 0) {
71 cargo.removeFighters(id, -q);
73 }
74 return true;
75 }
76 if (type == CargoItemType.WEAPONS) {
77 if (q > 0) {
78 cargo.addWeapons(id, q);
80 } else
81 if (q < 0) {
82 cargo.removeWeapons(id, -q);
84 }
85 return true;
86 }
87 if (type == CargoItemType.SPECIAL) {
88 SpecialItemData data = new SpecialItemData(id, param);
89 if (q > 0) {
90 cargo.addSpecial(data, q);
92 } else
93 if (q < 0) {
94 cargo.removeItems(CargoItemType.SPECIAL, data, -q);
95 AddRemoveCommodity.addItemLossText(data, -q, text);
96 }
97 return true;
98 }
99
100 return false;
101 }
102
103}
static SectorAPI getSector()
Definition Global.java:59
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static void addWeaponLossText(String weaponId, int quantity, TextPanelAPI text)
static void addCommodityLossText(String commodityId, int quantity, TextPanelAPI text)
static void addFighterLossText(String wingId, int quantity, TextPanelAPI text)
static void addItemGainText(SpecialItemData data, int quantity, TextPanelAPI text)
static void addCommodityGainText(String commodityId, int quantity, TextPanelAPI text)
static void addItemLossText(SpecialItemData data, int quantity, TextPanelAPI text)
static void addWeaponGainText(String weaponId, int quantity, TextPanelAPI text)
static void addFighterGainText(String wingId, int quantity, TextPanelAPI text)