Ejemplo n.º 1
0
 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();
 }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
 private void TestMovement(object sender, LogicEventArgs e)
 {
     if (IsStopping)
         Complete();
     else if (CanMove())
         StartAnimation();
     else
         timeout.Start();
 }
Ejemplo n.º 4
0
 private void TestContinuation(object sender, LogicEventArgs e)
 {
     // TODO: Fix bottleneck
     if (!IsStopping && CanMove())
         StartAnimation();
     else
         Completion.Start();
 }