Пример #1
0
        public void UpdateMachine(GameTime gameTime)
        {
            //don't do anything if you have no states
            if (states.Count == 0)
                return;

            //don't do anything if there's no current
            //state, and no default state
            if (currentState == null)
                currentState = defaultState;
            if (currentState == null)
                return;

            //check for transitions, and then update
            FSMStateEnum oldStateID = currentState.GetID();
            goalStateID = currentState.CheckTransitions();

            //switch if there was a transition
            if (goalStateID != oldStateID)
            {
                if (TransitionState(goalStateID))
                {
                    currentState.Exit();
                    currentState = goalState;
                    currentState.Enter();
                }
            }
            currentState.Update(gameTime);
        }
Пример #2
0
        public void Reset()
        {
            if (currentState != null)
                currentState.Exit();
            currentState = defaultState;

            //init all the states
            for (int i = 0; i < states.Count; i++)
                states[i].Init();

            //and now enter the m_defaultState, if any
            if (currentState != null)
                currentState.Enter();
        }
Пример #3
0
 public void SetDefaultState(FSMState state)
 {
     defaultState = state;
 }
Пример #4
0
 public void AddState(FSMState newState)
 {
     states.Add(newState);
 }
Пример #5
0
        bool TransitionState(FSMStateEnum goal)
        {
            //don't do anything if you have no states
            if (states.Count == 0)
                return false;

            //determine if we have state of type 'goal'
            //in the list, and switch to it, otherwise, quit out
            for (int i = 0; i < states.Count; i++)
            {
                if (states[i].GetID() == goal)
                {
                    goalState = states[i];
                    return true;
                }
            }
            return false;
        }
Пример #6
0
 public void SetDefaultState(FSMState state)
 {
     defaultState = state;
 }
Пример #7
0
 public void AddState(FSMState newState)
 {
     states.Add(newState);
 }