private void PopulateGrid(List <Included> players) { //this.dataGridView1.Rows.Add(i++, "", "Shrimpppppppp", "4,321", "231", "50%", "60%", " 5.43 ", " 601 ", "10.3"); foreach (Included player in players) { if (player.type == "player") { string leaderboardRanking = player.attributes.rank.ToString(); string playername = player.attributes.name.ToString(); string rankpoints = player.attributes.stats.rankPoints.ToString(); string games = player.attributes.stats.games.ToString(); string winrate = Math.Round(StatsCalculation.GetWinRatio(player.attributes.stats.wins, player.attributes.stats.games), 2).ToString() + "%"; string kd = Math.Round(StatsCalculation.GetKD(player.attributes.stats.kills, player.attributes.stats.games), 2).ToString(); string kda = Math.Round(player.attributes.stats.kda, 2).ToString(); string adr = player.attributes.stats.averageDamage.ToString(); string avgRank = Math.Round(player.attributes.stats.averageRank, 2).ToString(); System.Drawing.Image image = PlayerFactory.GetRankedImage(player.attributes.stats.rankPoints); this.dataGridView1.Rows.Add(leaderboardRanking, image, playername, rankpoints, games, winrate, kd, kda, adr, avgRank); } } }
private static async Task <UnRankedObject> ComputeStats(ModeStats stats) { if (stats != null) { return(new UnRankedObject() { GamesPlayed = (int)stats.RoundsPlayed, Wins = (int)stats.Wins, WinPercent = Math.Round(StatsCalculation.GetWinRatio(stats.Wins, stats.RoundsPlayed), 2), AvgSurvivalTime = Math.Round(StatsCalculation.GetAverageSurvivedTime(stats.TimeSurvived, stats.RoundsPlayed), 2), Adr = (int)StatsCalculation.GetAdr(stats.DamageDealt, stats.RoundsPlayed), HeadshotRatio = Math.Round(StatsCalculation.GetHeadshotRatio(stats.HeadshotKills, stats.Kills), 2), MaxKills = (int)stats.RoundMostKills, LongestKill = Math.Round(stats.LongestKill, 2), DbnosPerRound = Math.Round(StatsCalculation.GetKnocksPerRound(stats.DBNOS, stats.RoundsPlayed), 2), FraggerRating = Math.Round(StatsCalculation.GetFraggerRating( StatsCalculation.GetAdr(stats.DamageDealt, stats.RoundsPlayed), StatsCalculation.GetHeadshotRatioBelowOne(stats.HeadshotKills, stats.Kills), StatsCalculation.GetAverageSurvivedTimeBase10(stats.TimeSurvived, stats.RoundsPlayed), StatsCalculation.GetWinRatioBelowOne(stats.Wins, stats.RoundsPlayed)), 0) }); } else { return(new UnRankedObject() { GamesPlayed = 0, Wins = 0, WinPercent = 0, AvgSurvivalTime = 0, Adr = 0, HeadshotRatio = 0, MaxKills = 0, LongestKill = 0, DbnosPerRound = 0, FraggerRating = 0 }); } }
private static async Task <RankedObject> ComputeStatsRanked(ModeStatsRanked stats, List <RootMatch> matches, string playername) { if (stats != null) { RankedObject ranked = GetRankedObject((int)stats.currentRankPoint); ranked.GamesPlayed = (int)stats.RoundsPlayed; ranked.Wins = (int)stats.Wins; ranked.WinPercent = Math.Round(StatsCalculation.GetWinRatio(stats.Wins, stats.RoundsPlayed), 2); ranked.AverageRank = Math.Round(stats.AvgRank, 2); ranked.TopTenPercent = Math.Round(stats.Top10Ratio * 100, 2); ranked.Adr = (int)Math.Round(StatsCalculation.GetAdr(stats.DamageDealt, stats.RoundsPlayed), 0); ranked.Kd = Math.Round(StatsCalculation.GetKD(stats.Kills, stats.Deaths), 2); ranked.Kda = Math.Round(StatsCalculation.GetKDA(stats.Kills, stats.Assists, stats.Deaths), 2); ranked.DbnosPerRound = Math.Round(StatsCalculation.GetKnocksPerRound(stats.Dbnos, stats.RoundsPlayed), 2); ranked.FraggerRating = await Task.Run(() => ComputeRankedFraggerRating(matches, playername)); return(ranked); } else { RankedObject ranked = GetRankedObject(0); ranked.GamesPlayed = 0; ranked.Wins = 0; ranked.WinPercent = 0; ranked.AverageRank = 0; ranked.TopTenPercent = 0; ranked.Adr = 0; ranked.Kd = 0; ranked.Kda = 0; ranked.DbnosPerRound = 0; ranked.FraggerRating = 0; return(ranked); } }
private static async Task <double> ComputeRankedFraggerRating(List <RootMatch> matches, string playername) { if (matches.Count == 0) { return(0); } else { double totalKills = 0; double headshotKills = 0; double damageDealt = 0; double timeSurvived = 0; double winPlace = 0; int count = 0; foreach (RootMatch match in matches) { if (count == 20) { break; } if (match.data.attributes.matchType == "competitive") { foreach (MatchSingleObject participant in match.included) { if (participant.type == "participant") { ParticipantObject matchplayer = (ParticipantObject)participant; string name = matchplayer.attributes.stats.name; if (name == playername) { totalKills += matchplayer.attributes.stats.kills; headshotKills += matchplayer.attributes.stats.headshotKills; damageDealt += matchplayer.attributes.stats.damageDealt; timeSurvived += matchplayer.attributes.stats.timeSurvived; if (matchplayer.attributes.stats.winPlace == 1) { winPlace += matchplayer.attributes.stats.winPlace; } count++; break; } } } } } double adr = StatsCalculation.GetAdr(damageDealt, count); double headshotratio = StatsCalculation.GetHeadshotRatioBelowOne(headshotKills, totalKills); double survivedtime = StatsCalculation.GetAverageSurvivedTimeBase10(timeSurvived, count); double winratepercent = StatsCalculation.GetWinRatioBelowOne(winPlace, count); double fraggerRating = Math.Round(StatsCalculation.GetFraggerRating(adr, headshotratio, survivedtime, winratepercent), 0); return(fraggerRating); } }