Example #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);
             }
        }
Example #2
0
 internal void ChangeState(State newState)
 {
     requestedNewState = newState;
 }
Example #3
0
 internal StateMachine(Entity setOwner)
 {
     owner = setOwner;
      CurrentState = null;
      requestedNewState = null;
 }