protected virtual void setState(StateType state) { if (OnChangeStateEvent != null) { OnChangeStateEvent.Invoke(m_currentState, state); m_currentState = state; } }
/// <summary> /// ステートを一つ前に戻す。 /// </summary> /// <param name="arg">変更先に渡す引数</param> /// <returns>変更が成功したかどうか</returns> public bool RequestBackState(IChangeStateArg arg = null) { if (stateStack.Count < 1) { return(false); } var tmpState = currentState; currentState = stateStack.Pop(); OnChangeStateEvent?.Invoke(currentState, tmpState, arg, true); return(true); }
/// <summary> /// ステート変更をリクエストする。 /// </summary> /// <param name="requestState">変更先のステート</param> /// <param name="arg">変更先に渡す引数</param> /// <returns>変更が成功したかどうか</returns> public bool RequestChangeState(T requestState, IChangeStateArg arg = null) { if (requestState.Equals(currentState)) { return(false); } stateStack.Push(currentState); var tmpState = currentState; currentState = requestState; OnChangeStateEvent?.Invoke(currentState, tmpState, arg, false); return(true); }