Example #1
0
 public void ClearActionQueue()
 {
     for (var i = actionQueue.Count - 1; i >= 0; --i)
     {
         OnActionDequeue?.Invoke(i);
     }
     actionQueue.Clear();
     Pathfinder.RepaintHexColors();
 }
Example #2
0
 public void CancelLastAction()
 {
     if (!isExecutingActions)
     {
         return;
     }
     if (actionQueue.Count == 1)
     {
         Interrupt();
         return;
     }
     actionQueue.RemoveAt(actionQueue.Count - 1);
     OnActionDequeue?.Invoke(actionQueue.Count - 1);
 }
Example #3
0
        private IEnumerator DequeueCoroutine()
        {
            isExecutingActions = true;
            while (actionQueue.Count != 0)
            {
                var action = actionQueue.First();
                Debug.Log(action);
                yield return(action.Execute());

                actionQueue.RemoveAt(0);
                OnActionDequeue?.Invoke(0);
                if (action.HasBeenInterrupted)
                {
                    ClearActionQueue();
                    break;
                }
            }
            isExecutingActions = false;
        }