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(); }
private int TransitionConditionEdit(State state, int countInList) { GUILayout.BeginHorizontal(); if (GUILayout.Button("X", GUILayout.Width(30)) && state.arrTransitionList.Length > 0) { BK_Function.RemoveAtArr <TransitionCondition>(countInList, ref state.arrTransitionList); return(-1); } TRANS_ID transid = state.arrTransitionList[countInList].eTransID; if (transid != 0) { GUI.color = Color.red; } GUILayout.Label("TransID : ", GUILayout.Width(50)); EditorGUI.BeginChangeCheck(); transid = (TRANS_ID)EditorGUILayout.IntField((int)transid, GUILayout.Width(30)); if (EditorGUI.EndChangeCheck()) { state.arrTransitionList[countInList].SetTransID(transid); } GUI.color = Color.white; GUILayout.Label("다음 상태 : ", GUILayout.Width(60)); STATE_ID nextid = (STATE_ID)EditorGUILayout.IntPopup((int)state.arrTransitionList[countInList].nextStateID, curStatePopupList.arr_sName, curStatePopupList.arr_nID, GUILayout.Width(200)); state.arrTransitionList[countInList].SetNextStateID(nextid); float transtime = EditorGUILayout.FloatField("전이 시간 설정 : ", (state.arrTransitionList[countInList].transitionWithTime == null) ? 0 : state.arrTransitionList[countInList].transitionWithTime.m_fConditionTimeValue); if (transtime != 0) { state.arrTransitionList[countInList].SetTransTime(transtime, state); } else { state.arrTransitionList[countInList].RemoveTransTime(); } if (state.arrTransitionList[countInList].arrTransParam == null) { state.arrTransitionList[countInList].arrTransParam = new ArrayList(); } int TransCondParam_Max = EditorGUILayout.IntSlider( "전이 조건 개수 : ", state.arrTransitionList[countInList].arrTransParam.Count, 0, 5); GUILayout.EndHorizontal(); return(TransCondParam_Max); }
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 OnChangeUserStory(TRANS_ID transID, STATE_ID stateid, STATE_ID preStateID) { Transform t; if (UICameraPos.dicPos.TryGetValue(stateid, out t)) { StartCameraMove(t); } }
void OnChangePopupUI(TRANS_ID transId, STATE_ID stateId, STATE_ID preStateId) { UDL.Log("PopupUI current State : " + stateId); switch (stateId) { default: break; } }
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 void End(TRANS_ID transID, STATE_ID nextStateID) { if (EventEnd_Before != null) { EventEnd_Before(transID, nextStateID, eID); } if (EventEnd != null) { EventEnd(transID, nextStateID, eID); } if (EventEnd_After != null) { EventEnd_After(transID, nextStateID, eID); } }
public void Start(TRANS_ID transID, STATE_ID preStateID) { if (EventStart_Before != null) { EventStart_Before(transID, eID, preStateID); } if (EventStart != null) { EventStart(transID, eID, preStateID); } if (EventStart_After1 != null) { EventStart_After1(transID, eID, preStateID); } if (EventStart_After2 != null) { EventStart_After2(transID, eID, preStateID); } }
/// <summary> /// 특정 상태로 넘어가기 위한 조건을 1개 이상 설정할 수 있다. /// 가지고 있는 모든 조건을 만족했을 때만 다음 상태로 전이한다. /// </summary> /// <param name="uiID">특정코드번호를 정의하고 입력해두면 상태가 전이 됐을 때 어떤 전이조건으로 전이됐는지 체크할 때 사용할 수 있다. 사용할 일이 없다면 0으로 입력</param> /// <param name="transTime">초단위의 시간을 입력. 상태가 시작되고 입력된 시간이 지나면 조건이 만족된다. 시간조건을 사용하지 않는다면 0으로 입력</param> public TransitionCondition(STATE_ID _nextStateID, TRANS_ID uiID, float transTime, params TransCondWithParam[] _arrTransParam) { eTransID = uiID; nextStateID = _nextStateID; if (transTime != 0) { transitionWithTime = new TransCondWithTime(transTime); } if (_arrTransParam != null) { if (_arrTransParam.Length > 0) { for (int i = 0; i < _arrTransParam.Length; i++) { arrTransParam.Add(_arrTransParam[i]); } } } }
void OnStart_US_EndState(TRANS_ID transId, STATE_ID stateId, STATE_ID preStateId) { FSM_Layer.Inst.ChangeFSM(FSM_LAYER_ID.UserStory, FSM_ID.USMain); //[curState]->USMain_OutroToMainMenu FSM_Layer.Inst.SetTrigger(FSM_LAYER_ID.UserStory, TRANS_PARAM_ID.TRIGGER_ESCAPE); }
private void OnStart_USLoading(TRANS_ID transID, STATE_ID stateID, STATE_ID preStateID) { StartCoroutine(LoadUI()); }
private void OnStart(TRANS_ID transID, STATE_ID stateID, STATE_ID preStateID) { ReactionProcess(dicIndex[stateID].onStart, dicIndex[stateID].onStartExcuteId); UDL.Log(gameObject.name + " OnStart : " + stateID + " // after active : " + gameObject.activeSelf, nLogOption, isDebug, nLogLevel); }
private void OnStartBefore(TRANS_ID transID, STATE_ID stateID, STATE_ID preStateID) { ReactionProcess(dicIndex[stateID].onStartBefore, dicIndex[stateID].onStartBeforeExcuteId); UDL.Log(gameObject.name + " OnStartBefore : " + stateID, nLogOption, isDebug, nLogLevel); }
private void OnEndAfter(TRANS_ID transID, STATE_ID stateID, STATE_ID preStateID) { ReactionProcess(dicIndex[preStateID].onEndAfter, dicIndex[preStateID].onEndAfterExcuteId); UDL.Log(gameObject.name + " OnEndAfter : " + preStateID, nLogOption, isDebug, nLogLevel); }
void OwnerEnd(TRANS_ID transID, STATE_ID stateid, STATE_ID preStateID) { }
public void SetTransID(TRANS_ID id) { eTransID = id; UDL.LogWarning("Set trans ID : " + eTransID, FSM.logOption, FSM.warningLoglv); }