Example #1
0
    /// <summary>
    /// Update only the highest prority move
    /// </summary>
    /// <param name="deltaTime">Change in time</param>
    public IMove Update(float deltaTime)
    {
        IMove updatedMove = null;

        for (int i = moves.Count - 1; i >= 0; i--)
        {
            IMove move = moves[i];
            if (updatedMove == null)
            {
                if (move.Update(deltaTime))
                {
                    updatedMove = move;
                }
            }
            else
            {
                move.Close();
            }
        }

        if (updatedMove != null)
        {
            return(updatedMove);
        }

        throw new NoMoveCandidatesException();
    }
Example #2
0
 protected override void NextMove(float deltaTime)
 {
     for (int i = moves.Count - 1; i >= 0; i--)
     {
         IMove move = moves[i];
         move.Issue();
         if (move.Update(deltaTime))
         {
             if (lastUsed != null && move != lastUsed)
             {
                 lastUsed.Close();
             }
             lastUsed = move;
             return;
         }
     }
     throw new NoMoveCandidatesException();
 }
Example #3
0
    protected override void Reset()
    {
        IMove current = CurrentMove;

        if (current != null)
        {
            current.Close();
        }
        TimeSinceStart = 0;
    }