void OnChangeUserStory(TRANS_ID transId, STATE_ID stateId, STATE_ID preStateId) { UDL.Log("UserStory current State : " + stateId); curUSState.Value = stateId.ToString(); FSM_Layer.Inst.SetInt_NoCondChk(FSM_LAYER_ID.MainUI, TRANS_PARAM_ID.INT_USERSTORY_STATE, (int)stateId); FSM_Layer.Inst.SetInt_NoCondChk(FSM_LAYER_ID.MainUI, TRANS_PARAM_ID.INT_USERSTORY_PRE_STATE, (int)preStateId); FSM_Layer.Inst.SetTrigger(FSM_LAYER_ID.MainUI, TRANS_PARAM_ID.TRIGGER_CHECK_ANY_CONDITION); switch (stateId) { case STATE_ID.USMain_BtnSample: FSM_Layer.Inst.ChangeFSM(FSM_LAYER_ID.UserStory, FSM_ID.USBtn); break; case STATE_ID.USMain_ScrollSample: FSM_Layer.Inst.ChangeFSM(FSM_LAYER_ID.UserStory, FSM_ID.USScroll); break; case STATE_ID.USMain_TimeSample: FSM_Layer.Inst.ChangeFSM(FSM_LAYER_ID.UserStory, FSM_ID.USTime); break; case STATE_ID.USMain_ExitConfirm: ExitConfirm(); break; default: break; } UserDataManager.Inst.AddExp(); }
void OwnerStart(TRANS_ID transID, STATE_ID stateid, STATE_ID preStateID) { fStartTime = UnityEngine.Time.realtimeSinceStartup; fPauseTIme = 0; fPauseInterval = 0; UDL.LogWarning("TransCondWithTime Owner Start // current :" + stateid.ToString() + " / " + fStartTime.ToString() + " / pre : " + preStateID + " / transID : " + transID + " / hashcode : " + this.GetHashCode(), FSM.logOption, FSM.warningLoglv); }
void TransitionStart(TRANS_ID transParamID, STATE_ID nextStateID) { triggerID = TRANS_PARAM_ID.TRIGGER_NONE; if (!IsActive) { UDL.Log(fsmID + " Refuse TransitionStart", logOption, FSM.logLv); return; } if (nextStateID == STATE_ID.HistoryBack) { HistoryBack(); return; } if (!dicStateList.TryGetValue(nextStateID, out tStateBuffer)) { UDL.LogError(nextStateID.ToString() + " 등록된 씬이 아님!", logOption, FSM.errorLoglv); return; } calldepth++; if (calldepth > 1) { UDL.LogWarning(fsmID + " FSM Call Depth is : " + calldepth + " // 재귀호출구조가 되면서 EvnetStateChange callback이 현재 상태만을 매개변수로 역순으로 반복호출됩니다. ", logOption, FSM.warningLoglv); } UDL.Log(fsmID + " Transition Start// " + curState.eID + " -> " + dicStateList[nextStateID].eID + " // " + transParamID, logOption, FSM.logLv); STATE_ID preStateID = curState.eID; curState.End(transParamID, nextStateID); if (!curState.NoHistory) { history.Push(curState.eID); } curState = dicStateList[nextStateID]; curState.Start(transParamID, preStateID); if (EventStateChange != null) { EventStateChange(transParamID, curState.eID, preStateID); } calldepth--; }
public State GetState(STATE_ID stateID) { UDL.Log("GetState : " + stateID.ToString() + " / dicStateList.Count : " + dicStateList.Count.ToString(), logOption, FSM.logLv); if (dicStateList.TryGetValue(stateID, out tStateBuffer)) { return(tStateBuffer); } UDL.LogError("등록되지 않은 상태를 호출했음 " + stateID, logOption, FSM.errorLoglv); return(null); }