Пример #1
0
        private List <PlayerEncounterStats> GetPlayerEncounters(Player player, TimeConstraints constraints)
        {
            var statsDictionary = new InitializerDictionary <string, PlayerEncounterStats>();
            Func <Player, PlayerEncounterStats> getStats = (Player statsPlayer) =>
            {
                var stats = statsDictionary.Get(statsPlayer.SteamId, () => new PlayerEncounterStats(statsPlayer.Name, statsPlayer.SteamId));
                return(stats);
            };
            var kills  = player.Kills.Where(kill => constraints.Match(kill.Time));
            var deaths = player.Deaths.Where(kill => constraints.Match(kill.Time));

            foreach (var kill in kills)
            {
                var stats = getStats(kill.Victim);
                stats.Kills++;
            }
            foreach (var death in deaths)
            {
                var stats = getStats(death.Killer);
                stats.Deaths++;
            }
            var encounters = statsDictionary.Values.OrderByDescending(stats => stats.Encounters).ToList();

            return(encounters);
        }
Пример #2
0
        private List <PlayerItemStats> GetPlayerItems(Player player, TimeConstraints constraints)
        {
            var statsDictionary = new InitializerDictionary <string, PlayerItemStats>();
            var purchases       = player.Purchases.Where(purchase => constraints.Match(purchase.Time));
            var kills           = player.Kills.Where(kill => constraints.Match(kill.Time)).ToList();
            int rounds          = player.Rounds.Count(round => constraints.Match(round.Time));

            foreach (var purchase in purchases)
            {
                var stats = statsDictionary.Get(purchase.Item, () => new PlayerItemStats(purchase.Item));
                stats.TimesPurchased++;
            }
            var items = statsDictionary.Values.OrderByDescending(stats => stats.TimesPurchased).ToList();

            foreach (var item in items)
            {
                int itemKills = kills.Count(kill => kill.Weapon == item.Item);
                item.PurchasesPerRound = Ratio.Get(item.TimesPurchased, rounds, true);
                item.KillsPerPurchase  = Ratio.Get(itemKills, item.TimesPurchased, true);
            }
            return(items);
        }
Пример #3
0
        private List <PlayerWeaponStats> GetPlayerWeapons(Player player, TimeConstraints constraints)
        {
            var statsDictionary = new InitializerDictionary <string, PlayerWeaponStats>();
            var kills           = player.Kills.Where(kill => constraints.Match(kill.Time));

            foreach (var kill in kills)
            {
                var stats = statsDictionary.Get(kill.Weapon, () => new PlayerWeaponStats(kill.Weapon));
                stats.Kills++;
                if (kill.Headshot)
                {
                    stats.HeadshotKills++;
                }
                if (kill.Penetrated)
                {
                    stats.PenetrationKills++;
                }
            }
            var weapons = statsDictionary.Values.OrderByDescending(stats => stats.Kills).ToList();

            return(weapons);
        }