/// <summary> /// 改变游戏状态 /// </summary> /// <param name="eGameState"></param> /// <param name="loadingStyle"></param> /// <param name="callBackWhenChangeFinished"></param> public void ChangeGameState(string eGameState, ELoadingType loadingStyle, Action callBackWhenChangeFinished) { if (this.IsInChangingState) { ClientStateChangeArgs nextStateArgs = new ClientStateChangeArgs { sClientState = eGameState, eLoadingStyle = loadingStyle, aCallBack = callBackWhenChangeFinished }; this.m_qClientNextStateQueue.Enqueue(nextStateArgs); } else { if (this.CurrentClientState != eGameState) { this.m_sNextGameState = eGameState; this.m_eCurrentLoadingStyle = loadingStyle; this.m_aCallBackWhenChangeFinished = callBackWhenChangeFinished; this.m_bIsInChangingState = true; if (this.CurrentClientState != "Max") { this.SetLoadingVisible(this.m_eCurrentLoadingStyle, true); this.m_oCurrentClientState.OnLeave(); CaomaoDriver.ResourceModule.UnloadResource(); } this.DoChangeToNewState(); } } }
public void ChangeGameStateQueue() { if (this.m_qClientNextStateQueue.Count > 0) { ClientStateChangeArgs stateChangeArgs = this.m_qClientNextStateQueue.Dequeue(); this.ChangeGameState(stateChangeArgs.sClientState, stateChangeArgs.eLoadingStyle, stateChangeArgs.aCallBack); } }
/// <summary> /// 改变游戏状态 /// </summary> /// <param name="eGameState"></param> /// <param name="loadingStyle"></param> /// <param name="callBackWhenChangeFinished"></param> public void ChangeGameState(string eGameState, ELoadingStyle loadingStyle, Action callBackWhenChangeFinished) { if (this.IsInChangingState) { ClientStateChangeArgs item = new ClientStateChangeArgs { sClientState = eGameState, eLoadingStyle = loadingStyle, aCallBack = callBackWhenChangeFinished }; this.m_qClientStateQueue.Enqueue(item); } else { this.m_oClientStateMachine.ConvertToState(eGameState, loadingStyle, callBackWhenChangeFinished); this.RegisterCallBackOnChangedFinished(new Action(this.ChangeGameStateQueue)); } }