Exemple #1
0
        private void PerformChangeState()
        {
            if (requestedNewState == null)
            throw new ArgumentNullException("requestedNewState");
             if (requestedNewState.Owner == null)
            throw new ArgumentNullException("requestedNewState.owner");

             Log.AI(owner, "Changing state to " + requestedNewState.ToString());

             State previousState = CurrentState;

             Log.AI(owner, "Previous state was " + (previousState != null ? previousState.ToString() : "null"));

             if (CurrentState != null)
            CurrentState.Leave();

             CurrentState = requestedNewState;
             requestedNewState = null;

             if (CurrentState.Enter() == false)
             {
            CurrentState = null;
            Log.AI(owner, "Failed to enter new state. Reverting to previous state.");
            ChangeState(previousState);
             }
        }