Ejemplo n.º 1
0
 private void PopulatePvpStats(GuildMemberStats member, PvpStats pvpStats)
 {
     member.Pvp2v2Rating        = pvpStats.Pvp2v2Rating;
     member.Pvp3v3Rating        = pvpStats.Pvp3v3Rating;
     member.PvpRbgRating        = pvpStats.PvpRbgRating;
     member.TotalHonorableKills = pvpStats.TotalHonorableKills;
 }
Ejemplo n.º 2
0
 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
     });
 }
Ejemplo n.º 3
0
 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
     });
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }