001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.EveryFrameScript;
007import com.fs.starfarer.api.Global;
008import com.fs.starfarer.api.campaign.InteractionDialogAPI;
009import com.fs.starfarer.api.campaign.rules.MemoryAPI;
010import com.fs.starfarer.api.util.Misc.Token;
011import com.fs.starfarer.api.util.Misc.VarAndMemory;
012
013/**
014 * SetLater <variable> <delay in days>
015 */
016public class SetLater extends BaseCommandPlugin {
017
018        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
019
020                //String flag = params.get(0).getString(memoryMap);
021                final VarAndMemory var = params.get(0).getVarNameAndMemory(memoryMap);
022                final float delay = params.get(1).getFloat(memoryMap);
023                
024                Global.getSector().addScript(new EveryFrameScript() {
025                        float elapsed = 0f;
026                        public boolean runWhilePaused() {
027                                return false;
028                        }
029                        public boolean isDone() {
030                                return elapsed > delay;
031                        }
032                        public void advance(float amount) {
033                                if (elapsed > delay) {
034                                        return;
035                                }
036                                elapsed += amount;
037                                if (elapsed > delay) {
038                                        var.memory.set(var.name, true);
039                                }
040                        }
041                });
042                
043                return true;
044        }
045
046}