private static PlayerInfo GetPlayerInfo(string[] log, GameStats game) { var friendly = new UploadMetaData.Player(); var opposing = new UploadMetaData.Player(); if(game?.Rank > 0) friendly.Rank = game.Rank; if(game?.LegendRank > 0) friendly.LegendRank = game.LegendRank; if(game?.PlayerCardbackId > 0) friendly.Cardback = game.PlayerCardbackId; if(game?.Stars > 0) friendly.Stars = game.Stars; if(game?.PlayerCards.Sum(x => x.Count) == 30 && game?.PlayerCards.Sum(x => x.Unconfirmed) <= 24) { friendly.DeckList = game.PlayerCards.Where(x => x.Id != Database.UnknownCardId).SelectMany(x => Enumerable.Repeat(x.Id, x.Count)).ToArray(); if(game.HsDeckId > 0) friendly.DeckId = game.HsDeckId; } if(game?.ArenaWins > 0) friendly.Wins = game.ArenaWins; if(game?.ArenaLosses > 0) friendly.Losses = game.ArenaLosses; if(game?.OpponentRank > 0) opposing.Rank = game.OpponentRank; if(game?.OpponentLegendRank > 0) opposing.LegendRank = game.OpponentLegendRank; if(game?.OpponentCardbackId > 0) opposing.Cardback = game.OpponentCardbackId; if(game?.FriendlyPlayerId > 0) { return new PlayerInfo(game.FriendlyPlayerId == 1 ? friendly : opposing, game.FriendlyPlayerId == 2 ? friendly : opposing); } var player1Name = GetPlayer1Name(log); if(player1Name == game?.PlayerName) return new PlayerInfo(friendly, opposing, 1); if(player1Name == game?.OpponentName) return new PlayerInfo(opposing, friendly, 2); return null; }
public PlayerInfo(UploadMetaData.Player player1, UploadMetaData.Player player2, int friendlyPlayerId = -1) { Player1 = player1; Player2 = player2; FriendlyPlayerId = friendlyPlayerId; }
private static List <UploadMetaData.Player> GetPlayerInfo(GameStats game) { if (game == null || game.FriendlyPlayerId == 0) { return(null); } var friendly = new UploadMetaData.Player(); var opposing = new UploadMetaData.Player(); friendly.Id = game.FriendlyPlayerId; opposing.Id = game.OpponentPlayerId; if (game.PlayerCardbackId > 0) { friendly.Cardback = game.PlayerCardbackId; } if (game.GameMode == GameMode.Ranked) { if (game.Rank > 0) { friendly.Rank = game.Rank; } if (game.LegendRank > 0) { friendly.LegendRank = game.LegendRank; } if (game.Stars > 0) { friendly.Stars = game.Stars; } if (game.StarLevel > 0) { friendly.StarLevel = game.StarLevel; } if (game.StarMultiplier > 0) { friendly.StarMultiplier = game.StarMultiplier; } if (game.StarsAfter > 0) { friendly.StarsAfter = game.StarsAfter; } if (game.StarLevelAfter > 0) { friendly.StarLevelAfter = game.StarLevelAfter; } if (game.LegendRankAfter > 0) { friendly.LegendRankAfter = game.LegendRankAfter; } if (game.OpponentRank > 0) { opposing.Rank = game.OpponentRank; } if (game.OpponentLegendRank > 0) { opposing.LegendRank = game.OpponentLegendRank; } if (game.OpponentStarLevel > 0) { opposing.StarLevel = game.OpponentStarLevel; } } if (game.GameMode == GameMode.Battlegrounds) { if (game.BattlegroundsRating > 0) { friendly.BattlegroundsRating = game.BattlegroundsRating; } if (game.BattlegroundsRatingAfter > 0) { friendly.BattlegroundsRatingAfter = game.BattlegroundsRatingAfter; } } else if (game.PlayerCards.Sum(x => x.Count) == 30 || game.IsDungeonMatch == true && game.DeckId != Guid.Empty) { friendly.DeckList = game.PlayerCards.Where(x => x.Id != Database.UnknownCardId).SelectMany(x => Enumerable.Repeat(x.Id, x.Count)).ToArray(); if (game.HsDeckId > 0) { friendly.DeckId = game.HsDeckId; } } if (game.GameMode == GameMode.Arena) { if (game.ArenaWins > 0) { friendly.Wins = game.ArenaWins; } if (game.ArenaLosses > 0) { friendly.Losses = game.ArenaLosses; } } else if (game.GameMode == GameMode.Brawl) { if (game.BrawlWins > 0) { friendly.Wins = game.BrawlWins; } if (game.BrawlLosses > 0) { friendly.Losses = game.BrawlLosses; } } if (game.OpponentCardbackId > 0) { opposing.Cardback = game.OpponentCardbackId; } return(new List <UploadMetaData.Player>() { friendly, opposing }); }
private static PlayerInfo GetPlayerInfo(IGameState game, int wins, int losses) { var matchInfo = game.MatchInfo; if (matchInfo == null) { return(null); } var localPlayer = matchInfo.LocalPlayer; var opposingPlayer = matchInfo.OpposingPlayer; if (localPlayer == null || opposingPlayer == null) { return(null); } var friendly = new UploadMetaData.Player(); var opposing = new UploadMetaData.Player(); var standard = matchInfo.FormatType == (int)FormatType.FT_STANDARD; var rank = standard ? localPlayer.StandardRank : localPlayer.WildRank; if (rank > 0) { friendly.Rank = rank; } var legendRank = standard ? localPlayer.StandardLegendRank : localPlayer.WildLegendRank; if (legendRank > 0) { friendly.LegendRank = legendRank; } if (localPlayer.CardBackId > 0) { friendly.Cardback = localPlayer.CardBackId; } var stars = standard ? localPlayer.StandardStars : localPlayer.WildStars; if (stars > 0) { friendly.Stars = stars; } if (game.LocalPlayer.Deck?.Cards.Sum(x => x.Count) > 0) { friendly.DeckList = game.LocalPlayer.Deck.Cards.SelectMany(x => Enumerable.Repeat(x.Id, x.Count)).ToArray(); if (game.LocalPlayer.Deck.DeckId > 0) { friendly.DeckId = game.LocalPlayer.Deck.DeckId; } } if (matchInfo.GameType == (int)GameType.GT_ARENA || IsBrawl((GameType)matchInfo.GameType)) { if (wins > 0) { friendly.Wins = wins; } if (losses > 0) { friendly.Losses = losses; } } var oppRank = standard ? opposingPlayer.StandardRank : opposingPlayer.WildRank; if (oppRank > 0) { opposing.Rank = oppRank; } var oppLegendRank = standard ? opposingPlayer.StandardLegendRank : opposingPlayer.WildLegendRank; if (oppLegendRank > 0) { opposing.LegendRank = oppLegendRank; } if (opposingPlayer.CardBackId > 0) { opposing.Cardback = opposingPlayer.CardBackId; } if (game.OpposingPlayer.Deck?.Cards.Sum(x => x.Count) > 0) { opposing.DeckList = game.OpposingPlayer.Deck.Cards.SelectMany(x => Enumerable.Repeat(x.Id, x.Count)).ToArray(); if (game.OpposingPlayer.Deck.DeckId > 0) { opposing.DeckId = game.OpposingPlayer.Deck.DeckId; } } return(new PlayerInfo(localPlayer.Id == 1 ? friendly : opposing, localPlayer.Id == 2 ? friendly : opposing)); }
private static PlayerInfo GetPlayerInfo(string[] log, GameStats game) { var friendly = new UploadMetaData.Player(); var opposing = new UploadMetaData.Player(); if (game?.Rank > 0) { friendly.Rank = game.Rank; } if (game?.LegendRank > 0) { friendly.LegendRank = game.LegendRank; } if (game?.PlayerCardbackId > 0) { friendly.Cardback = game.PlayerCardbackId; } if (game?.Stars > 0) { friendly.Stars = game.Stars; } if (game?.PlayerCards.Sum(x => x.Count) == 30 && game?.PlayerCards.Sum(x => x.Unconfirmed) <= 24) { friendly.DeckList = game.PlayerCards.Where(x => x.Id != Database.UnknownCardId).SelectMany(x => Enumerable.Repeat(x.Id, x.Count)).ToArray(); if (game.HsDeckId > 0) { friendly.DeckId = game.HsDeckId; } } if (game?.GameMode == GameMode.Arena) { if (game.ArenaWins > 0) { friendly.Wins = game.ArenaWins; } if (game.ArenaLosses > 0) { friendly.Losses = game.ArenaLosses; } } else if (game?.GameMode == GameMode.Brawl) { if (game.BrawlWins > 0) { friendly.Wins = game.BrawlWins; } if (game.BrawlLosses > 0) { friendly.Losses = game.BrawlLosses; } } if (game?.OpponentRank > 0) { opposing.Rank = game.OpponentRank; } if (game?.OpponentLegendRank > 0) { opposing.LegendRank = game.OpponentLegendRank; } if (game?.OpponentCardbackId > 0) { opposing.Cardback = game.OpponentCardbackId; } if (game?.FriendlyPlayerId > 0) { return(new PlayerInfo(game.FriendlyPlayerId == 1 ? friendly : opposing, game.FriendlyPlayerId == 2 ? friendly : opposing)); } var player1Name = GetPlayer1Name(log); if (player1Name == game?.PlayerName) { return(new PlayerInfo(friendly, opposing, 1)); } if (player1Name == game?.OpponentName) { return(new PlayerInfo(opposing, friendly, 2)); } return(null); }
public static async Task <UploadMetaData> Generate(Deck deck, int?hearthstoneBuild) { var metaData = new UploadMetaData(); var serverInfoResult = await TryGetReflection(Reflection.GetServerInfo); if (serverInfoResult.Successful) { var serverInfo = serverInfoResult.Result; metaData.AuroraPassword = serverInfo.AuroraPassword; metaData.ServerIp = serverInfo.Address; metaData.ClientHandle = serverInfo.ClientHandle.ToString(); metaData.GameHandle = serverInfo.GameHandle.ToString(); metaData.SpectatePassword = serverInfo.SpectatorPassword; metaData.SpectatorMode = serverInfo.SpectatorMode; metaData.Resumable = serverInfo.Resumable; metaData.ServerPort = serverInfo.Port.ToString(); metaData.ServerVersion = serverInfo.Version; } var formatResult = await TryGetReflection(Reflection.GetFormat); if (formatResult.Successful) { metaData.Format = formatResult.Result; var gameTypeResult = await TryGetReflection(Reflection.GetGameType); if (gameTypeResult.Successful) { metaData.GameType = Util.GetBnetGameType(gameTypeResult.Result, formatResult.Result); } } var friendly = new UploadMetaData.Player() { DeckId = deck?.Id, DeckList = deck?.Cards?.Where(x => x != null).SelectMany(x => Enumerable.Repeat(x.Id, x.Count)).ToArray() }; var opposing = new UploadMetaData.Player(); var matchInfoResult = await TryGetReflection(Reflection.GetMatchInfo); if (matchInfoResult.Successful) { var matchInfo = matchInfoResult.Result; metaData.FriendlyPlayerId = matchInfo.LocalPlayer.Id; metaData.LadderSeason = matchInfo.RankedSeasonId; metaData.ScenarioId = matchInfo.MissionId; if (matchInfo.LocalPlayer.CardBackId > 0) { friendly.Cardback = matchInfo.LocalPlayer.CardBackId; } if (matchInfo.OpposingPlayer.CardBackId > 0) { opposing.Cardback = matchInfo.OpposingPlayer.CardBackId; } metaData.Player1 = matchInfo.LocalPlayer.Id == 1 ? friendly : opposing; metaData.Player2 = matchInfo.LocalPlayer.Id == 2 ? friendly : opposing; } metaData.HearthstoneBuild = hearthstoneBuild; metaData.MatchStart = DateTime.Now.ToString("o"); return(metaData); }
private static PlayerInfo GetPlayerInfo(GameStats game) { if (game == null || game.FriendlyPlayerId == 0) { return(null); } var friendly = new UploadMetaData.Player(); var opposing = new UploadMetaData.Player(); if (game.Rank > 0) { friendly.Rank = game.Rank; } if (game.LegendRank > 0) { friendly.LegendRank = game.LegendRank; } if (game.PlayerCardbackId > 0) { friendly.Cardback = game.PlayerCardbackId; } if (game.Stars > 0) { friendly.Stars = game.Stars; } if (game.PlayerCards.Sum(x => x.Count) == 30 || game.IsDungeonMatch == true && game.DeckId != Guid.Empty) { friendly.DeckList = game.PlayerCards.Where(x => x.Id != Database.UnknownCardId).SelectMany(x => Enumerable.Repeat(x.Id, x.Count)).ToArray(); if (game.HsDeckId > 0) { friendly.DeckId = game.HsDeckId; } } if (game.GameMode == GameMode.Arena) { if (game.ArenaWins > 0) { friendly.Wins = game.ArenaWins; } if (game.ArenaLosses > 0) { friendly.Losses = game.ArenaLosses; } } else if (game.GameMode == GameMode.Brawl) { if (game.BrawlWins > 0) { friendly.Wins = game.BrawlWins; } if (game.BrawlLosses > 0) { friendly.Losses = game.BrawlLosses; } } if (game.OpponentRank > 0) { opposing.Rank = game.OpponentRank; } if (game.OpponentLegendRank > 0) { opposing.LegendRank = game.OpponentLegendRank; } if (game.OpponentCardbackId > 0) { opposing.Cardback = game.OpponentCardbackId; } return(new PlayerInfo(game.FriendlyPlayerId == 1 ? friendly : opposing, game.FriendlyPlayerId == 2 ? friendly : opposing)); }