Exemplo n.º 1
0
        public bool Remove(Action <PriorityChainNode> processor)
        {
            if (head == null)
            {
                return(false);
            }

            if (head.Processor == processor)
            {
                head = head.Next;
                return(true);
            }
            var predecessor = head;

            while (predecessor.Next != null)
            {
                if (predecessor.Next.Processor == processor)
                {
                    predecessor.Next = predecessor.Next.Next;
                    return(true);
                }
                predecessor = predecessor.Next;
            }
            return(false);
        }
Exemplo n.º 2
0
        private void InitializeAndStartGame(PriorityChainNode chainNode)
        {
            InitializeRun.Invoke();
#if UNITY_EDITOR
            LogEvent("StartGame");
#endif
            GameTime.StartRace();
            if (StartGame != null)
            {
                StartGame();
            }
            chainNode.ExecuteNext();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Adds a new node to the chained list
        /// </summary>
        /// <param name="callbackOrder">The lower the value, the earlier this node will be called</param>
        /// <param name="processor">The method that will be processed</param>
        public void Add(int callbackOrder, Action <PriorityChainNode> processor)
        {
            var newNode = new PriorityChainNode(callbackOrder, processor);

            if (head == null || head.CallbackOrder > callbackOrder)
            {
                newNode.Next = head;
                head         = newNode;
                return;
            }

            var predecessor = head;

            while (predecessor.Next != null && predecessor.Next.CallbackOrder <= callbackOrder)
            {
                predecessor = predecessor.Next;
            }
            newNode.Next     = predecessor.Next;
            predecessor.Next = newNode;
        }
Exemplo n.º 4
0
 public int CompareTo(PriorityChainNode other)
 {
     return(CallbackOrder.CompareTo(other.CallbackOrder));
 }