Example #1
0
 protected virtual void setState(StateType state)
 {
     if (OnChangeStateEvent != null)
     {
         OnChangeStateEvent.Invoke(m_currentState, state);
         m_currentState = state;
     }
 }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
 /// <summary>
 /// State切り替わりイベントの削除
 /// </summary>
 /// <param name="_e"></param>
 public void RemoveStateChangeEvent(OnChangeStateEvent _e)
 {
     m_onChangeStateEvent -= _e;
 }
        //-----------------------------------------
        // State切り替わりイベント管理
        //-----------------------------------------
        #region ===== CHANGE_STATE_EVENT_CONTROLL =====

        /// <summary>
        /// State切り替わりイベントの登録
        /// </summary>
        /// <param name="_e"></param>
        public void AddStateChangeEvent(OnChangeStateEvent _e)
        {
            m_onChangeStateEvent += _e;
        }