private void PopulatePvpStats(GuildMemberStats member, PvpStats pvpStats) { member.Pvp2v2Rating = pvpStats.Pvp2v2Rating; member.Pvp3v3Rating = pvpStats.Pvp3v3Rating; member.PvpRbgRating = pvpStats.PvpRbgRating; member.TotalHonorableKills = pvpStats.TotalHonorableKills; }
private static PvpStats CalculatePvpStatsDelta(PvpStats a, PvpStats b) { return(new PvpStats { Deaths = b.Deaths - a.Deaths, Kills = b.Kills - a.Kills, MatchesLost = b.MatchesLost - a.MatchesLost, MatchesWon = b.MatchesWon - a.MatchesWon, TimePlayed = b.TimePlayed - a.TimePlayed, Dbno = b.Dbno - a.Dbno, Headshots = b.Headshots - a.Headshots, Revives = b.Revives - a.Revives, Suicides = b.Suicides - a.Suicides, BlindKills = b.BlindKills - a.BlindKills, BulletsFired = b.BulletsFired - a.BulletsFired, BulletsHit = b.BulletsHit - a.BulletsHit, DbnoAssists = b.DbnoAssists - a.DbnoAssists, DeniedRevives = b.DeniedRevives - a.DeniedRevives, GadgetsDestroyed = b.GadgetsDestroyed - a.GadgetsDestroyed, HostagesDefended = b.HostagesDefended - a.HostagesDefended, HostagesRescued = b.HostagesRescued - a.HostagesRescued, KillAssists = b.KillAssists - a.KillAssists, MeleeKills = b.MeleeKills - a.MeleeKills, PenetrationKills = b.PenetrationKills - a.PenetrationKills, RappelBreaches = b.RappelBreaches - a.RappelBreaches }); }
private static PvpStats MergePvpStats(PvpStats a, PvpStats b) { return(new PvpStats { Dbno = a.Dbno + b.Dbno, Deaths = a.Deaths + b.Deaths, Headshots = a.Headshots + b.Headshots, Kills = a.Kills + b.Kills, Revives = a.Revives + b.Revives, Suicides = a.Suicides + b.Suicides, BlindKills = a.BlindKills + b.BlindKills, BulletsFired = a.BulletsFired + b.BulletsFired, BulletsHit = a.BulletsHit + b.BulletsHit, DbnoAssists = a.DbnoAssists + b.DbnoAssists, DeniedRevives = a.DeniedRevives + b.DeniedRevives, GadgetsDestroyed = a.GadgetsDestroyed + b.GadgetsDestroyed, HostagesDefended = a.HostagesDefended + b.HostagesDefended, HostagesRescued = a.HostagesRescued + b.HostagesRescued, KillAssists = a.KillAssists + b.KillAssists, MatchesLost = a.MatchesLost + b.MatchesLost, MatchesWon = a.MatchesWon + b.MatchesWon, MeleeKills = a.MeleeKills + b.MeleeKills, PenetrationKills = a.PenetrationKills + b.PenetrationKills, RappelBreaches = a.RappelBreaches + b.RappelBreaches, TimePlayed = a.TimePlayed + b.TimePlayed }); }
public CompetitorStats CalculateCompetitorStats(Competitor competitor, ICollection <Match> matches) { var statsByOpponent = new Dictionary <Competitor, PvpStats>(); foreach (var match in matches.Select(match => match.ResultForCompetitor(competitor)) .Where(result => !result.Invalid) .OrderBy(m => m.Opponent.Name)) { PvpStats pvpStats; if (statsByOpponent.ContainsKey(match.Opponent)) { pvpStats = statsByOpponent[match.Opponent]; } else { pvpStats = new PvpStats { Opponent = match.Opponent }; statsByOpponent.Add(match.Opponent, pvpStats); } switch (match.Outcome) { case MatchOutcome.Win: pvpStats.Wins++; break; case MatchOutcome.Lose: pvpStats.Loses++; break; case MatchOutcome.Tie: pvpStats.Ties++; break; default: continue; } pvpStats.EloNet += match.EloChange; statsByOpponent[match.Opponent] = pvpStats; // Update the dictionary } // Flatten dictionary and send it back var finalStats = new CompetitorStats(); finalStats.Pvp.AddRange(statsByOpponent.Values.ToList().OrderByDescending(x => x.EloNet)); return(finalStats); }
public static PvpStats GetPvpStatsFromJson(string json) { PvpStats stats = new PvpStats(); var jObject = JsonConvert.DeserializeObject(json) as JObject; var pvpNode = jObject.SelectToken("pvp"); var bracketsNode = pvpNode.SelectToken("brackets"); stats.Pvp2v2Rating = int.Parse(bracketsNode.SelectToken("ARENA_BRACKET_2v2.rating").ToString()); stats.Pvp3v3Rating = int.Parse(bracketsNode.SelectToken("ARENA_BRACKET_3v3.rating").ToString()); stats.PvpRbgRating = int.Parse(bracketsNode.SelectToken("ARENA_BRACKET_RBG.rating").ToString()); stats.TotalHonorableKills = int.Parse(jObject["totalHonorableKills"].ToString()); return(stats); }