//返回场景ID private int DealRequestEctypeSceneChange(SMsgActionNewWorld_SC targetScene) { //此时mapID是否生效问题,当其为0,1时再次请求,如果为2时 if (targetScene.dwMapParam != 0) { if (IsCreateRoleStroyLine((int)targetScene.dwMapParam)) { EctypeModel.Instance.SetPreEctypeID(CommonDefineManager.Instance.CommonDefine.TUTORIAL_ECTYPE_ID); } //当剧情ID不为0,说明存在要播放剧情// foreach (var stroyLineConfig in StroyLineConfigManager.Instance.GetStroyLineConfig) { if (stroyLineConfig.Value._StroyLineID == targetScene.dwMapParam) { storyConfigData = stroyLineConfig.Value; StroyLineDataManager.Instance.curStroyLineKey = new StroyLineKey { VocationID = storyConfigData._TriggerVocation, ConditionID = storyConfigData._TriggerCondition, EctypeID = storyConfigData._EctypeID }; return(stroyLineConfig.Value._SceneMapID); } } } return(0); }
/// <summary> /// 场景转换处理 /// </summary> /// <param name="notifyArgs"></param> void SceneChangeHandle(INotifyArgs notifyArgs) { PlayerManager.Instance.LockPlayOnSceneChange(false); //add by lee : stop player state PlayerManager.Instance.StopPlayersSkill(); SMsgActionNewWorld_SC targetScene = (SMsgActionNewWorld_SC)notifyArgs; m_newWorldMsg = targetScene; //如果是需要换服,需要对一些数据进行管理 switch ((eTeleportType)targetScene.byTeleportFlg) { case eTeleportType.TELEPORTTYPE_JUMPSERVER: HeartFPSManager.Instance.Clear(); SingletonManager.Instance.Clear(); NotifyManager.ClearEvents(); EnegryColdWorkData.Instance.Re_registration(); TownGuideManager.Instance.ResetEventHandler(); RegisterEventHandler(); break; } GameState targetSceneState = SceneManager.GetCurSceneState(targetScene.dwMapId); //TraceUtil.Log(SystemModel.Rocky, "下一个地图ID:" + targetScene.dwMapId); //TraceUtil.Log(SystemModel.Rocky, "下一个dwMapParam:" + targetScene.dwMapParam); this.GotoState(targetSceneState, true); int returnMapID = DealRequestEctypeSceneChange(targetScene); if (returnMapID != 0) { m_curSceneMapID = (uint)returnMapID; } else { //跳转生效// m_curSceneMapID = targetScene.dwMapId; } SceneDataManager.Instance.ResetMapTridderAreaInfo(m_curSceneMapID); //TraceUtil.Log(SystemModel.Rocky, "下一个地图ID(剧情过滤完成后):" + m_curSceneMapID); m_curSceneName = EctypeConfigManager.Instance.SceneConfigList[(int)m_curSceneMapID]._szSceneName; IsLockOperatorMode = EctypeConfigManager.Instance.SceneConfigList[(int)m_curSceneMapID]._isLockMode; //TraceUtil.Log(SystemModel.Rocky, "下一个Scene Name:" + m_curSceneName); }