Esempio n. 1
0
        public static void Analyze()
        {
            Report = new MatchReport();

            AnalyzeWinrates();
            AnalyzeTeamcomps();
            DisplaySummary();
        }
Esempio n. 2
0
        public static MatchReport GetMatchReport(string name, string region, bool platinumWinrates)
        {
            // Select which winrates to display.
            if (platinumWinrates)
            {
                Code.Leagueofgraphs.PlatinumWinrates = true;
            }
            else
            {
                Code.Leagueofgraphs.PlatinumWinrates = false;
            }

            try
            {
                _ = Code.Riot.GetCurrentGameWebsite(name, region);
            }
            catch (Exception)
            {
                throw;
            }

            Report = new MatchReport();

            var    BlueTeamChampions = new List <(string Name, double Winrate, string DamageDealt, string DamageReceived)>();
            var    RedTeamChampions  = new List <(string Name, double Winrate, string DamageDealt, string DamageReceived)>();
            double BlueAverageWinrate;
            double RedAverageWinrate;
            double BlueTotalChampionPoints;
            double RedTotalChampionPoints;

            var    BlueTeamTeamcomp        = new List <(string Amount, string GroupName, string Points)>();
            var    RedTeamTeamcomp         = new List <(string Amount, string GroupName, string Points)>();
            string PlayerTeam              = "";
            string PlayerChampion          = "";
            double BlueTotalTeamcompPoints = 0;
            double RedTotalTeamcompPoints  = 0;

            #region CHAMPIONS

            // BLUE TEAM
            foreach (var participant in Riot.CurrentGame.Participants)
            {
                // Get searched player's champion name (only here because it iterates through everyone anyway).
                if (participant.SummonerName.ToLower() == name.ToLower())
                {
                    PlayerChampion = Ddragon.GetChampionFullName(Ddragon.GetChampionName(participant.ChampionId));
                    name           = participant.SummonerName;
                }

                if (participant.TeamId == 100)
                {
                    string championName    = Ddragon.GetChampionName(participant.ChampionId);
                    double championWinrate = Leagueofgraphs.GetWinrate(championName);

                    (string, string)championBuffs = Wiki.GetChampionBuffsPair(championName);

                    string damageDealt    = championBuffs.Item1;
                    string damageReceived = championBuffs.Item2;

                    BlueTeamChampions.Add((championName, championWinrate, damageDealt, damageReceived));
                }
            }

            BlueTotalChampionPoints = (Math.Round(((Math.Round(BlueTeamChampions.Select(x => x.Winrate).Average(), 1) - 50) * 100)));
            BlueAverageWinrate      = Math.Round(BlueTeamChampions.Select(x => x.Winrate).Average(), 1);

            // RED TEAM
            foreach (var participant in Riot.CurrentGame.Participants)
            {
                if (participant.TeamId == 200)
                {
                    string championName    = Ddragon.GetChampionName(participant.ChampionId);
                    double championWinrate = Leagueofgraphs.GetWinrate(championName);

                    (string, string)championBuffs = Wiki.GetChampionBuffsPair(championName);

                    string damageDealt    = championBuffs.Item1;
                    string damageReceived = championBuffs.Item2;

                    RedTeamChampions.Add((championName, championWinrate, damageDealt, damageReceived));
                }
            }
            RedTotalChampionPoints = (Math.Round(((Math.Round(RedTeamChampions.Select(x => x.Winrate).Average(), 1) - 50) * 100)));
            RedAverageWinrate      = Math.Round(RedTeamChampions.Select(x => x.Winrate).Average(), 1);

            #endregion CHAMPIONS

            #region TEAMCOMPS

            // Load champion groups.
            Data.DataResearch.Research.LoadChampionGroups();

            // BLUE TEAM
            for (int i = 0; i < Data.DataResearch.Research.ChampionGroups.Count; i++)
            {
                var championGroupMembers = BlueTeamChampions.Select(x => x.Name).ToList().Intersect(Data.DataResearch.Research.ChampionGroups[i].Item1.ChampionNames);
                var points = Data.DataResearch.Research.ChampionGroups[i].Item1.Points[championGroupMembers.Count()];

                BlueTeamTeamcomp.Add((championGroupMembers.Count().ToString(), Data.DataResearch.Research.ChampionGroups[i].Item1.DisplayName, points.ToString()));

                BlueTotalTeamcompPoints += points;
            }

            // RED TEAM
            for (int i = 0; i < Data.DataResearch.Research.ChampionGroups.Count; i++)
            {
                var championGroupMembers = RedTeamChampions.Select(x => x.Name).ToList().Intersect(Data.DataResearch.Research.ChampionGroups[i].Item1.ChampionNames);
                var points = Data.DataResearch.Research.ChampionGroups[i].Item1.Points[championGroupMembers.Count()];

                RedTeamTeamcomp.Add((championGroupMembers.Count().ToString(), Data.DataResearch.Research.ChampionGroups[i].Item1.DisplayName, points.ToString()));

                RedTotalTeamcompPoints += points;
            }

            #endregion TEAMCOMPS

            #region SUMMARY

            if (Riot.IsPlayerBlueTeam)
            {
                PlayerTeam = "BLUE";
            }
            else
            {
                PlayerTeam = "RED";
            }

            #endregion SUMMARY

            // Fix champion names.
            for (int i = 0; i < BlueTeamChampions.Count; i++)
            {
                BlueTeamChampions[i] = (Ddragon.GetChampionFullName(BlueTeamChampions[i].Name), BlueTeamChampions[i].Winrate, BlueTeamChampions[i].DamageDealt, BlueTeamChampions[i].DamageReceived);
            }
            for (int i = 0; i < RedTeamChampions.Count; i++)
            {
                RedTeamChampions[i] = (Ddragon.GetChampionFullName(RedTeamChampions[i].Name), RedTeamChampions[i].Winrate, RedTeamChampions[i].DamageDealt, RedTeamChampions[i].DamageReceived);
            }

            Report.BlueTeamChampions       = BlueTeamChampions;
            Report.RedTeamChampions        = RedTeamChampions;
            Report.BlueTeamTeamcomp        = BlueTeamTeamcomp;
            Report.RedTeamTeamcomp         = RedTeamTeamcomp;
            Report.BlueAverageWinrate      = BlueAverageWinrate;
            Report.RedAverageWinrate       = RedAverageWinrate;
            Report.BlueTotalTeamcompPoints = BlueTotalTeamcompPoints;
            Report.RedTotalTeamcompPoints  = RedTotalTeamcompPoints;
            Report.BlueTotalChampionPoints = BlueTotalChampionPoints;
            Report.RedTotalChampionPoints  = RedTotalChampionPoints;
            Report.PlayerTeam       = PlayerTeam;
            Report.PlayerName       = name;
            Report.PlayerChampion   = PlayerChampion;
            Report.PlatinumWinrates = platinumWinrates;
            Report.PlayerRegion     = region;

            return(Report);
        }