Esempio n. 1
0
        public string TopStateName()
        {
            if (m_StateStack.Count > 0)
            {
                C_IState state = m_StateStack.Peek();

                if (state != null)
                {
                    return(GetStateName(state));
                }
            }

            return("");
        }
Esempio n. 2
0
        public void Push(C_IState state)
        {
            if (state == null)
            {
                return;
            }

            if (m_StateStack.Count > 0)
            {
                m_StateStack.Peek().OnStateOverride();
            }

            m_StateStack.Push(state);

            state.OnStateEnter();
        }
Esempio n. 3
0
        public C_IState PopState()
        {
            if (m_StateStack.Count > 0)
            {
                C_IState state = m_StateStack.Pop();
                state.OnStateLeave();

                if (m_StateStack.Count > 0)
                {
                    m_StateStack.Peek().OnStateResume();
                }

                return(state);
            }

            return(null);
        }
Esempio n. 4
0
        public string GetStateName(C_IState state)
        {
            if (state == null)
            {
                return("");
            }

            Dictionary <string, C_IState> .Enumerator enumerator = m_RegistedState.GetEnumerator();
            while (enumerator.MoveNext())
            {
                KeyValuePair <string, C_IState> current = enumerator.Current;
                if (current.Value == state)
                {
                    return(current.Key);
                }
            }

            return("");
        }
Esempio n. 5
0
        public void RegisterState(string name, C_IState state)
        {
            if (string.IsNullOrEmpty(name))
            {
                C_DebugHelper.LogError("C_StateMachine RegisterState name is null or empty!");
                return;
            }

            if (state == null)
            {
                C_DebugHelper.LogError("C_StateMachine RegisterState state is null!");
                return;
            }

            if (m_RegistedState.ContainsKey(name))
            {
                C_DebugHelper.LogError("C_StateMachine RegisterState name = " + name + " is covered!");
            }

            m_RegistedState[name] = state;
        }
Esempio n. 6
0
        public C_IState ChangeState(C_IState state)
        {
            if (state == null)
            {
                return(null);
            }

            TarState = state;
            C_IState state2 = null;

            if (m_StateStack.Count > 0)
            {
                state2 = m_StateStack.Pop();
                state2.OnStateLeave();
            }

            m_StateStack.Push(state);
            state.OnStateEnter();

            return(state2);
        }
Esempio n. 7
0
 public void RegisterState(string name, C_IState state)
 {
     m_GameState.RegisterState(name, state);
 }