public string TopStateName() { if (m_StateStack.Count > 0) { C_IState state = m_StateStack.Peek(); if (state != null) { return(GetStateName(state)); } } return(""); }
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(); }
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); }
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(""); }
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; }
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); }
public void RegisterState(string name, C_IState state) { m_GameState.RegisterState(name, state); }