//------------------------------------------------------------------------------------------------------- /** * @brief 用来处理游戏中退回到登录或者选人界面 或者地图时使用 * @param bFlag 标识是否清理主角 true清理主角 */ public void Clear(bool bFlag = false) { Engine.IRenderSystem renderSys = Engine.RareEngine.Instance().GetRenderSystem(); if (renderSys != null && bFlag) { // 设置主Camera string strCameraName = "MainCamera"; Engine.ICamera cam = renderSys.GetCamera(ref strCameraName); if (cam != null) { cam.Enable(false); } } // 停止背景音乐 Engine.IAudio audio = Engine.RareEngine.Instance().GetAudio(); if (audio != null && bFlag) { audio.StopMusic(); } if (bFlag) { CmdManager.Instance().Clear(); } if (m_ControllerSys != null) { m_ControllerSys.GetCombatRobot().Stop(true); } if (MainPlayer != null) { MainPlayer.SendMessage(EntityMessage.EntityCommand_StopMove, MainPlayer.GetPos()); } if (m_EntitySys != null) { m_EntitySys.Clear(bFlag); } if (m_MapSystem != null) { m_MapSystem.ExitMap(); } MainPlayer = null; Engine.RareEngine.Instance().UnloadUnusedResources(); }
public void Execute(GameCmd.stFirstMainUserPosMapScreenUserCmd_S cmd) { //UserData.SetMsgTypeToEnterScene(); // 加载地图时,阻塞消息 //resetSceneData(); Action <UIPanelBase> loadingAction = (panelBase) => { UserData.MapID = cmd.mapid; // UserData.CurrentCountryID = cmd.countryid; UserData.Pos = new MapVector2(cmd.x, cmd.y); IMapSystem mapSystem = ClientGlobal.Instance().GetMapSystem(); if (mapSystem != null) { // 统一处理地图ID if (DataManager.Manager <MapDataManager>().CurLineNum != cmd.line && mapSystem.GetMapID() == cmd.mapid) { IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es != null) { es.Clear(); } GameCmd.stTimeTickMoveUserCmd_C cmdinfo = new GameCmd.stTimeTickMoveUserCmd_C { client_time = (uint)(Time.realtimeSinceStartup * 1000) }; NetService.Instance.SendCheckTime(cmdinfo); } //uint uSceneID = (cmd.countryid << 8) | cmd.mapid; mapSystem.EnterMap(cmd.mapid, new Vector3(cmd.x, 0, -cmd.y)); Log.Info("进入场景后的第一个消息 id={0}", cmd.mapid); } UserData.MapID = cmd.mapid; //UserData.CurrentCountryID = cmd.countryid; UserData.Pos = new MapVector2(cmd.x, cmd.y); Engine.Utility.Log.Error("EnterMap:({0},{1})", cmd.x, -cmd.y); MapDataManager mgr = DataManager.Manager <MapDataManager>(); if (mgr.CurLineNum != cmd.line) { if (!mgr.IsDefalultLine) { string mapName = mapSystem.GetMapName(); TipsManager.Instance.ShowLocalFormatTips(LocalTextType.Copy_Commond_changeline, mapName, cmd.line); } DataManager.Manager <UIPanelManager>().HidePanel(PanelID.ChangeLinePanel); // stRequestLineInfoMapScreenUserCmd_C changeLine = new stRequestLineInfoMapScreenUserCmd_C(); // NetService.Instance.Send(changeLine); } mgr.CurLineNum = cmd.line; }; if (UserData.MapID != cmd.mapid) { DataManager.Manager <UIPanelManager>().ShowLoading(progress: 0); } //else //{ // loadingAction.Invoke(null); //} loadingAction.Invoke(null); }