public void Launch() { if (!overrideExecution && sm.Executing.Count > 0) { return; } if (interpreter != null || localSequence == null) { return; } if (localExecution) { abort = false; if (interpreter == null) { interpreter = new SequenceInterpreter(localSequence); } } else { // Remote start ge = new GameEvent("start sequence", new System.Collections.Generic.Dictionary <string, object> () { { "sequence", localSequence } }); Game.main.enqueueEvent(ge); } }
public override void ReceiveEvent(IGameEvent ev) { if (ev.Name.ToLower() == "start sequence") { Sequence sequence = (ev.getParameter("Sequence") as Sequence); Executing.Add(sequence); var i = new SequenceInterpreter(sequence); sequenceInterpreter.Add(i); toFinish.Add(i, ev); } sequenceInterpreter.ForEach(si => si.EventHappened(ev)); }
void Update() { if (localExecution && interpreter != null) { interpreter.Tick(); if (interpreter.SequenceFinished) { interpreter = null; if (loop && !abort) { Launch(); } } } }