Starsector API
Loading...
Searching...
No Matches
ShowResCost.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.util.ArrayList;
4import java.util.List;
5import java.util.Map;
6
7import com.fs.starfarer.api.campaign.InteractionDialogAPI;
8import com.fs.starfarer.api.campaign.rules.MemoryAPI;
9import com.fs.starfarer.api.util.Misc;
10import com.fs.starfarer.api.util.Misc.Token;
11
18public class ShowResCost extends BaseCommandPlugin {
19
20 public static class ResData {
21 String id;
22 int qty;
23 boolean consumed;
24 }
25
26 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
27 List<ResData> data = new ArrayList<ResData>();
28
29 float widthOverride = -1f;
30 for (int i = 0; i < params.size(); i++) {
31 Token t = params.get(i);
32
33 boolean commodityId = !t.isBoolean(memoryMap) && !t.isFloat(memoryMap);
34 if (commodityId) {
35 ResData curr = new ResData();
36 curr.id = t.getString(memoryMap);
37
38 i++;
39 t = params.get(i);
40 curr.qty = (int) t.getFloat(memoryMap);
41
42 if (params.size() > i + 1) {
43 t = params.get(i + 1);
44 if (t.isBoolean(memoryMap)) {
45 curr.consumed = t.getBoolean(memoryMap);
46 i++;
47 }
48 }
49 data.add(curr);
50 continue;
51 } else if (t.isFloat(memoryMap)) {
52 widthOverride = t.getFloat(memoryMap);
53 break;
54 }
55 }
56
57 String [] ids = new String [data.size()];
58 int [] qty = new int [data.size()];
59 boolean [] consumed = new boolean [data.size()];
60
61 for (int i = 0; i < data.size(); i++) {
62 ResData curr = data.get(i);
63 ids[i] = curr.id;
64 qty[i] = curr.qty;
65 consumed[i] = curr.consumed;
66 }
67
68 Misc.showCost(dialog.getTextPanel(), "Resources: required (available)", true, widthOverride, null, null, ids, qty, consumed);
69
70 return true;
71 }
72
73}
74
75
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)