public void KickPlayerResult(JObject jsonData) { if (jsonData == null) { throw new ArgumentNullException(nameof(jsonData)); } if (PlayerManager.Instance.RoomOwner.UserID == _localPlayer.UserID) { _kickPlayerInterceptor.EndWaitResponse(); } string result = (string)jsonData.SelectToken("Paras.Result"); string info = (string)jsonData.SelectToken("Paras.Info"); if (result == NotifyConsts.CommonNotification.Succeed) { string kickPlayerId = (string)jsonData.SelectToken("Paras.KickPlayerId"); if (kickPlayerId == _localPlayer.UserID) { PlayerManager.Instance.RoomOwner = null; PlayerManager.Instance.RemoveAllNetPlayer(); SendNotification(NotifyConsts.RoomNotification.KickPlayerResult, Tuple.Create <bool, string, string, List <PlayerVO> >(true, info, kickPlayerId, null), null); } else { PlayerManager.Instance.RemoveNetPlayer(kickPlayerId); var playerList = new List <PlayerVO>(); foreach (JToken jToken in jsonData.SelectTokens("Paras.RoomInfo.PlayerList").Children()) { var playerId = (string)jToken.SelectToken("PlayerId"); var playerName = (string)jToken.SelectToken("PlayerName"); var playerLevel = (string)jToken.SelectToken("PlayerLevel"); var prepareState = (bool)jToken.SelectToken("PrepareState"); //var playerTeam = (string)jToken.SelectToken("PlayerTeam"); var vehicleId = (string)jToken.SelectToken("VehicleInfo.Id"); var vehicleName = (string)jToken.SelectToken("VehicleInfo.Name"); var vehicleType = (string)jToken.SelectToken("VehicleInfo.Type"); var vehicleAttack = (float)jToken.SelectToken("VehicleInfo.Attack"); var vehicleDefend = (float)jToken.SelectToken("VehicleInfo.Defend"); var vehicleMotility = (float)jToken.SelectToken("VehicleInfo.Motility"); var vehicleMaxHealth = (float)jToken.SelectToken("VehicleInfo.MaxHealth"); var vehicle = new VehicleVO(vehicleId, vehicleName, Enum.TryParse(vehicleType, true, out VehicleType vt) ? vt : throw new InvalidCastException(nameof(vehicleType)), vehicleAttack, vehicleMotility, vehicleDefend, (int)vehicleMaxHealth, 0, null); var player = new PlayerVO(playerId, playerName, int.Parse(playerLevel), vehicle) { PrepareState = prepareState, //Team = Enum.TryParse(playerTeam, true, out Team team) ? team : throw new InvalidCastException(nameof(playerTeam)) }; playerList.Add(player); //用于界面显示 } SendNotification(NotifyConsts.RoomNotification.KickPlayerResult, Tuple.Create <bool, string, string, List <PlayerVO> >(true, info, kickPlayerId, playerList), null); } } else { SendNotification(NotifyConsts.RoomNotification.KickPlayerResult, Tuple.Create <bool, string, string, List <PlayerVO> >(false, info, null, null), null); } }
public void JoinRoomResult(JObject jsonData) { if (jsonData == null) { throw new ArgumentNullException(nameof(jsonData)); } string result = (string)jsonData.SelectToken("Paras.Result"); string info = (string)jsonData.SelectToken("Paras.Info"); if (result == NotifyConsts.CommonNotification.Succeed) { string joinPlayerId = (string)jsonData.SelectToken("Paras.JoinPlayerId"); if (joinPlayerId == _localPlayer.UserID) { _joinRoomInterceptor.EndWaitResponse(); var roomId = (string)jsonData.SelectToken("Paras.RoomInfo.RoomId"); var roomName = (string)jsonData.SelectToken("Paras.RoomInfo.RoomName"); var ownerId = (string)jsonData.SelectToken("Paras.RoomInfo.OwnerId"); var ownerName = (string)jsonData.SelectToken("Paras.RoomInfo.OwnerName"); var roomMode = (string)jsonData.SelectToken("Paras.RoomInfo.RoomMode"); var roomMap = (string)jsonData.SelectToken("Paras.RoomInfo.RoomMap"); var playerNum = (int)jsonData.SelectToken("Paras.RoomInfo.PlayerNum"); //获取房间信息 var room = new RoomVO(roomId, roomName, ownerId, ownerName, Enum.TryParse(roomMode, true, out RoomMode roomModeType) ? roomModeType : throw new InvalidCastException(nameof(roomMode)), Enum.TryParse(roomMap, true, out RoomMap roomMapType) ? roomMapType : throw new InvalidCastException(nameof(roomMap)), playerNum); //获取玩家列表 var playerList = new List <PlayerVO>(); foreach (JToken jToken in jsonData.SelectTokens("Paras.RoomInfo.PlayerList").Children()) { var playerId = (string)jToken.SelectToken("PlayerId"); var playerName = (string)jToken.SelectToken("PlayerName"); var playerLevel = (string)jToken.SelectToken("PlayerLevel"); var prepareState = (bool)jToken.SelectToken("PrepareState"); //var playerTeam = (string)jToken.SelectToken("PlayerTeam"); var vehicleId = (string)jToken.SelectToken("VehicleInfo.Id"); var vehicleName = (string)jToken.SelectToken("VehicleInfo.Name"); var vehicleType = (string)jToken.SelectToken("VehicleInfo.Type"); var vehicleAttack = (float)jToken.SelectToken("VehicleInfo.Attack"); var vehicleDefend = (float)jToken.SelectToken("VehicleInfo.Defend"); var vehicleMotility = (float)jToken.SelectToken("VehicleInfo.Motility"); var vehicleMaxHealth = (float)jToken.SelectToken("VehicleInfo.MaxHealth"); //获取玩家载具信息 var vehicle = new VehicleVO(vehicleId, vehicleName, Enum.TryParse(vehicleType, true, out VehicleType vt) ? vt : throw new InvalidCastException(nameof(vehicleType)), vehicleAttack, vehicleMotility, vehicleDefend, (int)vehicleMaxHealth, 0, null); //获取玩家信息 var player = new PlayerVO(playerId, playerName, int.Parse(playerLevel), vehicle) { PrepareState = prepareState, //Team = Enum.TryParse(playerTeam, true, out Team team) ? team : throw new InvalidCastException(nameof(playerTeam)) }; playerList.Add(player); //用于界面显示 if (player.UserID == ownerId) { PlayerManager.Instance.RoomOwner = player; } if (playerId != _localPlayer.UserID) { PlayerManager.Instance.AddNetPlayer(player); //用于后台玩家数据 } } room.PlayerList = playerList; SendNotification(NotifyConsts.LobbyNotification.JoinRoomResult, Tuple.Create(true, info), nameof(Tuple <bool, string>)); SendNotification(NotifyConsts.RoomNotification.InitRoomInfo, room, nameof(RoomVO)); } else { var playerList = new List <PlayerVO>(); PlayerVO joinPlayer = null; foreach (JToken jToken in jsonData.SelectTokens("Paras.RoomInfo.PlayerList").Children()) { var playerId = (string)jToken.SelectToken("PlayerId"); var playerName = (string)jToken.SelectToken("PlayerName"); var playerLevel = (string)jToken.SelectToken("PlayerLevel"); var prepareState = (bool)jToken.SelectToken("PrepareState"); //var playerTeam = (string)jToken.SelectToken("PlayerTeam"); var vehicleId = (string)jToken.SelectToken("VehicleInfo.Id"); var vehicleName = (string)jToken.SelectToken("VehicleInfo.Name"); var vehicleType = (string)jToken.SelectToken("VehicleInfo.Type"); var vehicleAttack = (float)jToken.SelectToken("VehicleInfo.Attack"); var vehicleDefend = (float)jToken.SelectToken("VehicleInfo.Defend"); var vehicleMotility = (float)jToken.SelectToken("VehicleInfo.Motility"); var vehicleMaxHealth = (float)jToken.SelectToken("VehicleInfo.MaxHealth"); var vehicle = new VehicleVO(vehicleId, vehicleName, Enum.TryParse(vehicleType, true, out VehicleType t) ? t : throw new InvalidCastException(nameof(vehicleType)), vehicleAttack, vehicleMotility, vehicleDefend, (int)vehicleMaxHealth, 0, null); var player = new PlayerVO(playerId, playerName, int.Parse(playerLevel), vehicle) { PrepareState = prepareState, //Team = Enum.TryParse(playerTeam, true, out Team team) ? team : throw new InvalidCastException(nameof(playerTeam)) }; if (player.UserID == joinPlayerId) { joinPlayer = player; } playerList.Add(player); } if (joinPlayer != null) { PlayerManager.Instance.AddNetPlayer(joinPlayer); } SendNotification(NotifyConsts.RoomNotification.NewPlayerJoinRoom, Tuple.Create(joinPlayer, playerList), nameof(Tuple <PlayerVO, List <PlayerVO> >)); } } else { _joinRoomInterceptor.EndWaitResponse(); SendNotification(NotifyConsts.LobbyNotification.JoinRoomResult, Tuple.Create(false, info), nameof(Tuple <bool, string>)); } }