Exemple #1
0
        public void ChangeScene(int scene_type)
        {
            m_RoomUserMgr.ActiveScene.Reset();
            m_ScenePool.RecycleScene(m_RoomUserMgr.ActiveScene);
            m_RoomUserMgr.ActiveScene = null;

            foreach (User us in m_RoomUserMgr.RoomUsers)
            {
                us.IsEntered = false;
            }

            m_CanCloseTime            = 0;
            m_RoomUserMgr.ActiveScene = m_ScenePool.NewScene();
            m_RoomUserMgr.ActiveScene.SetRoomUserManager(m_RoomUserMgr);
            //场景数据加载由加载线程执行(注:场景没有加载完成,场景状态仍然是sleep,Scene.Tick不会有实际的动作)
            SceneLoadThread.Instance.QueueAction(m_RoomUserMgr.ActiveScene.LoadData, scene_type);

            OnChangeScene();

            Msg_RC_ChangeScene msg = new Msg_RC_ChangeScene();

            msg.target_scene_id = scene_type;
            foreach (User us in m_RoomUserMgr.RoomUsers)
            {
                us.SendMessage(RoomMessageDefine.Msg_RC_ChangeScene, msg);
            }

            LogSys.Log(LOG_TYPE.INFO, "Room.ChangeScene {0} scene {1}", m_RoomId, scene_type);
        }
Exemple #2
0
        internal void ChangeScene(int scene_type)
        {
            m_ActiveScene.Reset();
            m_ScenePool.RecycleScene(m_ActiveScene);
            m_ActiveScene = null;

            foreach (User us in room_users_)
            {
                us.IsEntered = false;
            }

            can_close_time_ = 0;
            m_ActiveScene   = m_ScenePool.NewScene();
            m_ActiveScene.SetRoom(this);
            //场景数据加载由加载线程执行(注:场景没有加载完成,场景状态仍然是sleep,Scene.Tick不会有实际的动作)
            SceneLoadThread.Instance.QueueAction(m_ActiveScene.LoadData, scene_type);

            Msg_RC_ChangeScene msg = new Msg_RC_ChangeScene();

            msg.target_scene_id = scene_type;
            foreach (User us in room_users_)
            {
                us.SendMessage(RoomMessageDefine.Msg_RC_ChangeScene, msg);
            }

            LogSys.Log(LOG_TYPE.INFO, "Room.ChangeScene {0} scene {1}", cur_room_id_, scene_type);
        }
Exemple #3
0
    internal static void Execute(object msg, NetConnection conn, NetworkSystem networkSystem)
    {
        Msg_RC_ChangeScene _msg = msg as Msg_RC_ChangeScene;

        if (null == _msg)
        {
            return;
        }
        networkSystem.QuitBattle();
        networkSystem.Robot.NotifyChangeScene(_msg.main_scene_id);
    }
Exemple #4
0
    internal static void Execute(object msg, NetConnection conn)
    {
        Msg_RC_ChangeScene _msg = msg as Msg_RC_ChangeScene;

        if (null == _msg)
        {
            return;
        }
        int targetSceneId = _msg.target_scene_id;

        PluginFramework.Instance.ChangeScene(targetSceneId);
    }
Exemple #5
0
        private void PlayerGotoRoom(User user, int roomId, int targetRoomId)
        {
            bool isFieldThread;
            int  ix = GetActiveRoomThreadIndex(targetRoomId, out isFieldThread);

            if (ix < 0)
            {
                return;
            }

            RoomThread roomThread;

            if (isFieldThread)
            {
                roomThread = field_roomthread_list_[ix];
            }
            else
            {
                roomThread = roomthread_list_[ix];
            }
            roomThread.QueueAction(roomThread.AddUser, user, targetRoomId, (MyAction <bool, int, User>)((bool ret, int sceneId, User successUser) => {
                if (ret)
                {
                    Msg_RC_ChangeScene msg = new Msg_RC_ChangeScene();
                    msg.target_scene_id    = sceneId;
                    successUser.SendMessage(RoomMessageDefine.Msg_RC_ChangeScene, msg);

                    Msg_RL_ChangeSceneResult replyBuilder = new Msg_RL_ChangeSceneResult();
                    EntityInfo info = user.Info;
                    if (null != info)
                    {
                        replyBuilder.HP = info.Hp;
                        replyBuilder.MP = info.Energy;
                    }
                    replyBuilder.UserGuid     = user.Guid;
                    replyBuilder.RoomID       = roomId;
                    replyBuilder.TargetRoomID = targetRoomId;
                    replyBuilder.Result       = (int)SceneOperationResultEnum.Success;
                    connector_.SendMsgToLobby(replyBuilder);
                }
                else
                {
                    Msg_RL_ChangeSceneResult replyBuilder = new Msg_RL_ChangeSceneResult();
                    replyBuilder.UserGuid     = user.Guid;
                    replyBuilder.RoomID       = roomId;
                    replyBuilder.TargetRoomID = targetRoomId;
                    replyBuilder.Result       = (int)SceneOperationResultEnum.Cant_Find_Room;
                    connector_.SendMsgToLobby(replyBuilder);
                }
            }));
        }