001package com.fs.starfarer.api.impl.campaign.rulecmd; 002 003import java.awt.Color; 004import java.util.List; 005import java.util.Map; 006 007import com.fs.starfarer.api.EveryFrameScript; 008import com.fs.starfarer.api.Global; 009import com.fs.starfarer.api.campaign.InteractionDialogAPI; 010import com.fs.starfarer.api.campaign.OptionPanelAPI; 011import com.fs.starfarer.api.campaign.rules.MemoryAPI; 012import com.fs.starfarer.api.ui.ValueDisplayMode; 013import com.fs.starfarer.api.util.Misc; 014import com.fs.starfarer.api.util.Misc.Token; 015import com.fs.starfarer.api.util.Misc.VarAndMemory; 016 017public class AddSelector extends BaseCommandPlugin { 018 019 020 //AddSelector <order> <result variable> <text> <color> <min> <max> 021 public boolean execute(String ruleId, final InteractionDialogAPI dialog, List<Token> params, final Map<String, MemoryAPI> memoryMap) { 022 if (dialog == null) return false; 023 024 final VarAndMemory resultVar = params.get(1).getVarNameAndMemory(memoryMap); 025 final String text = params.get(2).getStringWithTokenReplacement(ruleId, dialog, memoryMap); 026 final Color color = params.get(3).getColor(memoryMap); 027 final float min = params.get(4).getFloat(memoryMap); 028 final float max = params.get(5).getFloat(memoryMap); 029 030 final String id = Misc.genUID(); 031 final OptionPanelAPI options = dialog.getOptionPanel(); 032 options.addSelector(text, id, color, 250, 50, min, max, ValueDisplayMode.VALUE, null); 033 034 Global.getSector().addTransientScript(new EveryFrameScript() { 035 public boolean runWhilePaused() { 036 return true; 037 } 038 private boolean done = false; 039 public boolean isDone() { 040 return done; 041 } 042 public void advance(float amount) { 043 if (done || 044 !options.hasSelector(id) || 045 !Global.getSector().isPaused() || 046 !Global.getSector().getCampaignUI().isShowingDialog()) { 047 done = true; 048 return; 049 } 050 resultVar.memory.set(resultVar.name, Math.round(options.getSelectorValue(id)), 0); 051 } 052 }); 053 054 return true; 055 } 056 057 @Override 058 public boolean doesCommandAddOptions() { 059 return true; 060 } 061 062 @Override 063 public int getOptionOrder(List<Token> params, final Map<String, MemoryAPI> memoryMap) { 064 int order = (int) params.get(0).getFloat(memoryMap); 065 return order; 066 } 067 068 069}