예제 #1
0
    private void Finish_State(EStateFinishType eStateFinishType)
    {
        CStateContainer pPrevState = p_pStateContainer_Current;

        if (_stack_Interrupt.Count > 0)
        {
            ENUM_STATE      eStateInterrupted = _stack_Interrupt.Pop();
            CStateContainer pNextState        = _mapState[eStateInterrupted];

            SetLeave_State(pNextState, eStateFinishType);
            SetInterruptResume_State(pNextState, pPrevState);
            SetCurrentState(eStateInterrupted);
        }
        else if (_queue_Waiting.Count > 0)
        {
            ENUM_STATE      pStateWaiting = _queue_Waiting.Dequeue();
            CStateContainer pNextState    = _mapState[pStateWaiting];

            SetLeave_State(pNextState, eStateFinishType);
            SetStart_State(_mapState[pStateWaiting], pPrevState, EStateStartType.Waited);
            SetCurrentState(pStateWaiting);
        }
        else
        {
            SetLeave_State(null, eStateFinishType);
            SetCurrentState(null);
        }
    }
예제 #2
0
 virtual public void OnFinish_State(CLASS_STATE pNextState, EStateFinishType eStateFinishType)
 {
     if (_pCoroutine_ExecuteContainer != null)
     {
         _pScriptOwner.StopCoroutine(_pCoroutine_ExecuteContainer);
     }
 }
예제 #3
0
 virtual public void OnFinish_State(TestStateBase pNextState, EStateFinishType eStateFinishType)
 {
     if (pNextState != null)
     {
         Debug.Log(IDictionaryItem_GetKey() + nameof(OnFinish_State) + " eStateFinishType : " + eStateFinishType + " pNextState : " + pNextState.ToString());
     }
     else
     {
         Debug.Log(IDictionaryItem_GetKey() + nameof(OnFinish_State) + " eStateFinishType : " + eStateFinishType + " pNextState : null");
     }
 }
예제 #4
0
    protected void SetLeave_State(CStateContainer pNextState, EStateFinishType eStateFinishType)
    {
        if (p_pStateContainer_Current != null)
        {
            p_pStateContainer_Current.EventFinish(pNextState, eStateFinishType);
            if (_pCoroutine != null)
            {
                _pOwner.StopCoroutine(_pCoroutine);
            }

            _stack_PrevState.Push(p_eStateCurrent);
        }
    }
예제 #5
0
        public void EventFinish(CStateContainer pNextState, EStateFinishType eStateFinishType)
        {
            p_bIsWait = false;

            if (pNextState != null)
            {
                p_pStateInstance.OnFinish_State(pNextState.p_pStateInstance, eStateFinishType);
            }
            else
            {
                p_pStateInstance.OnFinish_State(null, eStateFinishType);
            }
        }
예제 #6
0
            public override void OnFinish_State(TestStateBase pNextState, EStateFinishType eStateFinishType)
            {
                base.OnFinish_State(pNextState, eStateFinishType);

                p_bIsLoop = false;
            }