Starsector API
Loading...
Searching...
No Matches
AddSelector.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.awt.Color;
4import java.util.List;
5import java.util.Map;
6
7import com.fs.starfarer.api.EveryFrameScript;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.InteractionDialogAPI;
10import com.fs.starfarer.api.campaign.OptionPanelAPI;
11import com.fs.starfarer.api.campaign.rules.MemoryAPI;
12import com.fs.starfarer.api.ui.ValueDisplayMode;
13import com.fs.starfarer.api.util.Misc;
14import com.fs.starfarer.api.util.Misc.Token;
15import com.fs.starfarer.api.util.Misc.VarAndMemory;
16
17public class AddSelector extends BaseCommandPlugin {
18
19
20 //AddSelector <order> <result variable> <text> <color> <min> <max>
21 public boolean execute(String ruleId, final InteractionDialogAPI dialog, List<Token> params, final Map<String, MemoryAPI> memoryMap) {
22 if (dialog == null) return false;
23
24 final VarAndMemory resultVar = params.get(1).getVarNameAndMemory(memoryMap);
25 final String text = params.get(2).getStringWithTokenReplacement(ruleId, dialog, memoryMap);
26 final Color color = params.get(3).getColor(memoryMap);
27 final float min = params.get(4).getFloat(memoryMap);
28 final float max = params.get(5).getFloat(memoryMap);
29
30 final String id = Misc.genUID();
31 final OptionPanelAPI options = dialog.getOptionPanel();
32 options.addSelector(text, id, color, 250, 50, min, max, ValueDisplayMode.VALUE, null);
33
34 Global.getSector().addTransientScript(new EveryFrameScript() {
35 public boolean runWhilePaused() {
36 return true;
37 }
38 private boolean done = false;
39 public boolean isDone() {
40 return done;
41 }
42 public void advance(float amount) {
43 if (done ||
44 !options.hasSelector(id) ||
45 !Global.getSector().isPaused() ||
46 !Global.getSector().getCampaignUI().isShowingDialog()) {
47 done = true;
48 return;
49 }
50 resultVar.memory.set(resultVar.name, Math.round(options.getSelectorValue(id)), 0);
51 }
52 });
53
54 return true;
55 }
56
57 @Override
58 public boolean doesCommandAddOptions() {
59 return true;
60 }
61
62 @Override
63 public int getOptionOrder(List<Token> params, final Map<String, MemoryAPI> memoryMap) {
64 int order = (int) params.get(0).getFloat(memoryMap);
65 return order;
66 }
67
68
69}
static SectorAPI getSector()
Definition Global.java:59
int getOptionOrder(List< Token > params, final Map< String, MemoryAPI > memoryMap)
boolean execute(String ruleId, final InteractionDialogAPI dialog, List< Token > params, final Map< String, MemoryAPI > memoryMap)