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); }
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); }
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); }
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); }
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); } })); }