001package com.fs.starfarer.api.impl.campaign.rulecmd;
002
003import java.util.ArrayList;
004import java.util.List;
005import java.util.Map;
006
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 * Use "Call" instead; same functionality, more accurate and shorter name.
014 * 
015 * CallEvent $eventHandle <params> 
016 */
017public class CallEvent extends BaseCommandPlugin {
018        
019        public static interface CallableEvent {
020                boolean callEvent(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap);
021        }
022        
023        public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
024                
025                VarAndMemory handle = params.get(0).getVarNameAndMemory(memoryMap);
026                if (handle.memory.contains(handle.name)) {
027                        CallableEvent event = (CallableEvent) handle.memory.get(handle.name);
028                        
029                        if (event != null) {
030                                List<Token> notifyParams = new ArrayList<Token>();
031                                for (int i = 1; i < params.size(); i++) {
032                                        notifyParams.add(params.get(i));
033                                        //params.get(i).getString(memoryMap)
034                                }
035                                return event.callEvent(ruleId, dialog, notifyParams, memoryMap);
036                        }
037                }
038                
039                return false;
040        }
041
042}
043
044
045
046