private void HandleUserChangeScene(Msg_BL_UserChangeScene msg_, PBChannel channel, int src, uint session) { UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler; UserInfo user = dataProcess.GetUserInfo(msg_.Guid); if (user != null) { user.SceneId = msg_.SceneId; } }
internal void OnChangeSceneResult(ulong userGuid, int roomID, int targetRoomID, int result, int hp, int mp) { UserInfo user = LobbyServer.Instance.UserProcessScheduler.GetUserInfo(userGuid); if (user == null) { return; } if ((int)SceneOperationResultEnum.Success == result) { RoomInfo room = m_LobbyInfo.GetRoomByID(roomID); RoomInfo targetRoom = m_LobbyInfo.GetRoomByID(targetRoomID); if (null != room && null != targetRoom) { int fromSceneId = room.SceneType; int targetSceneId = targetRoom.SceneType; float enterX = 50, enterY = 50; /* int transportId = TransportConfigProvider.GenTransportId(fromSceneId, targetSceneId); TransportConfig cfg = TransportConfigProvider.Instance.GetTransportConfig(transportId); if (null != cfg) { enterX = cfg.m_EnterX; enterY = cfg.m_EnterY; } */ room.DelUsers(userGuid); if (room.RoomServerName == targetRoom.RoomServerName) { targetRoom.AddUsers(user.CampId, userGuid); user.CurrentState = UserState.Room; Msg_BL_UserChangeScene msg = new Msg_BL_UserChangeScene(); msg.Guid = userGuid; msg.SceneId = targetRoom.SceneType; LobbyServer.Instance.UserChannel.Send(user.UserSvrName, msg); } else { user.CurrentState = UserState.Online; RequestEnterSceneRoom(user, targetRoomID, hp, mp, enterX, enterY); } LogSys.Log(LOG_TYPE.INFO, "User change field success ! , guid:{0} room:{1} target room:{2} result:{3}", userGuid, roomID, targetRoomID, (SceneOperationResultEnum)result); } else { LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试 } } else { LogSys.Log(LOG_TYPE.INFO, "User change field failed ! guid:{0} room:{1} target room:{2} result:{3}", userGuid, roomID, targetRoomID, (SceneOperationResultEnum)result); LobbyServer.Instance.HighlightPrompt(user, 42);//进入游戏失败,请稍后重试 } }