001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.List;
004import java.util.Map;
005
006import com.fs.starfarer.api.Global;
007import com.fs.starfarer.api.campaign.InteractionDialogAPI;
008import com.fs.starfarer.api.campaign.rules.MemoryAPI;
009import com.fs.starfarer.api.util.Misc.Token;
010import com.fs.starfarer.api.util.Misc.VarAndMemory;
011
012/**
013 * Usage: AbortWait $waitHandle
014 * 
015 */
016public class AbortWait extends BaseCommandPlugin {
017
018        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
019                VarAndMemory handle = params.get(0).getVarNameAndMemory(memoryMap);
020
021                if (handle.memory.contains(handle.name)) {
022                        Wait wait = (Wait) handle.memory.get(handle.name);
023                        
024                        Global.getSector().removeScript(wait.getWaitScript());
025                        Global.getSector().removeScript(wait.getLeashScript());
026                        wait.getIndicator().getContainingLocation().removeEntity(wait.getIndicator());
027                        
028                        wait.getFinished().memory.unset(wait.getFinished().name);
029                        wait.getInterrupted().memory.unset(wait.getInterrupted().name);
030                        wait.getInProgress().memory.unset(wait.getInProgress().name);
031                        
032                        handle.memory.unset(handle.name);
033                }
034                
035                return true;
036        }
037
038}