예제 #1
0
        private async Task <Player> GetSkillLevel(Player player)
        {
            try
            {
                var hltvRating = Task.Run(() => new HLTVRating(long.Parse(player.SteamID), myMatchRepository));
                player.Skill.SetRating(await hltvRating);
                return(player);
            }
            catch (NoMatchstatisticsFoundException)
            {
                myLogger.LogWarning($"Didn't find any matches for {player.Name} (Steam ID: {player.SteamID}). Trying overall K/D rating from Steam.");
            }

            try
            {
                var steamapiStatistics = await mySteamworksApi.ParsePlayerStatistics(player.SteamID);

                var kdRating = new KDRating(steamapiStatistics);
                player.Skill.SetRating(kdRating);
                return(player);
            }
            catch (ProfileNotPublicException)
            {
                myLogger.LogWarning($"{player.Name}'s profile (Steam ID: {player.SteamID}) seems not to be public. Using dummy score!");
                player.Skill.SetRating(new DummyRating {
                    Score = new Random().NextDouble() + 0.3
                });
            }

            return(player);
        }
예제 #2
0
        public void Score_TwiceAsManyKillsAsDeaths_ReturnsTwo()
        {
            var kills = new Statistic {
                Name = "total_kills", Value = 20
            };
            var lastMatchKills = new Statistic {
                Name = "last_match_kills", Value = 0
            };
            var deaths = new Statistic {
                Name = "total_deaths", Value = 10
            };
            var lastMatchDeaths = new Statistic {
                Name = "last_match_deaths", Value = 1
            };

            var kdRating = new KDRating(new List <Statistic>()
            {
                kills, lastMatchKills, deaths, lastMatchDeaths
            });

            Assert.Equal(2.0d, kdRating.Score);
        }
예제 #3
0
        public void Score_ZeroDeaths_ReturnsInfinity()
        {
            var kills = new Statistic {
                Name = "total_kills", Value = 20
            };
            var lastMatchKills = new Statistic {
                Name = "last_match_kills", Value = 0
            };
            var deaths = new Statistic {
                Name = "total_deaths", Value = 0
            };
            var lastMatchDeaths = new Statistic {
                Name = "last_match_deaths", Value = 1
            };

            var kdRating = new KDRating(new List <Statistic>()
            {
                kills, lastMatchKills, deaths, lastMatchDeaths
            });

            Assert.Equal(double.PositiveInfinity, kdRating.Score);
        }
예제 #4
0
        public void Score_EqualNumberOfKillsAndDeaths_ReturnsOne()
        {
            var kills = new Statistic {
                Name = "total_kills", Value = 10
            };
            var lastMatchKills = new Statistic {
                Name = "last_match_kills", Value = 0
            };
            var deaths = new Statistic {
                Name = "total_deaths", Value = 10
            };
            var lastMatchDeaths = new Statistic {
                Name = "last_match_deaths", Value = 1
            };

            var kdRating = new KDRating(new List <Statistic>()
            {
                kills, lastMatchKills, deaths, lastMatchDeaths
            });

            Assert.Equal(1.0d, kdRating.Score);
        }