コード例 #1
0
        public void RequestChangeState(System.Type state)
        {
            if (m_CurrentStateHandler != null && m_CurrentStateHandler.GetType() == state)
            {
                return;
            }

            int stateIndex = CheckHasPotentialState(state);

            if (stateIndex == -1)
            {
                return;
            }


            StateHandlerBase lastState = m_CurrentStateHandler;

            m_CurrentStateHandler = m_Potential.States [stateIndex].Construct(m_Facade);

            if (lastState != null)
            {
                lastState.OnExit(m_CurrentStateHandler);
            }

            m_CurrentStateHandler.OnEnter(lastState);
        }
コード例 #2
0
        public void RequestChangeState <T>() where T : StateHandlerBase
        {
            if (m_CurrentStateHandler != null && m_CurrentStateHandler is T)
            {
                return;
            }

            int stateIndex = CheckHasPotentialState <T> ();

            if (stateIndex == -1)
            {
                return;
            }

            StateHandlerBase lastState = m_CurrentStateHandler;

            m_CurrentStateHandler = m_Potential.States[stateIndex].Construct(m_Facade);

            if (lastState != null)
            {
                lastState.OnExit(m_CurrentStateHandler);
            }

            m_CurrentStateHandler.OnEnter(lastState);
        }
コード例 #3
0
 public abstract void OnExit(StateHandlerBase nextState = null);
コード例 #4
0
 public abstract void OnEnter(StateHandlerBase lastState = null);