Exemplo n.º 1
0
        //-------------------------------------------------------------------------------------------------------

        /**
         * @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();
        }
Exemplo n.º 2
0
    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);
    }