private void Advance(object sender, LogicEventArgs e) { if (IsStopping && position == StopIndex || position == procedures.Count - 1) { Complete(); return; } Procedure pro = procedures[++position]; Event.Once(pro, Completed, Advance); pro.Start(); if (IsStopping) pro.Stop(); }
public object Handle(object target, string name, object[] args) { if (onces.Count == 0 && handlers.Count == 0) return null; LogicEventArgs e = new LogicEventArgs(name, args); foreach (LogicEventHandler handler in handlers) { try { handler(target, e); } catch (Exception ex) { Cinema.Notify($"Script error: {ex}"); throw; // TODO: Remove this in final production } if (e.IsHandled) break; } foreach (LogicEventHandler handler in onces) handlers.Remove(handler); onces.Clear(); return e.Result; }
private void TestMovement(object sender, LogicEventArgs e) { if (IsStopping) Complete(); else if (CanMove()) StartAnimation(); else timeout.Start(); }
private void TestContinuation(object sender, LogicEventArgs e) { // TODO: Fix bottleneck if (!IsStopping && CanMove()) StartAnimation(); else Completion.Start(); }