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;
		}
Beispiel #2
0
 public PlayerInfo(UploadMetaData.Player player1, UploadMetaData.Player player2, int friendlyPlayerId = -1)
 {
     Player1          = player1;
     Player2          = player2;
     FriendlyPlayerId = friendlyPlayerId;
 }
Beispiel #3
0
        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));
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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));
        }