Exemplo n.º 1
0
 public int GetGamePoints(Tournament tournament, Player player, int? roundNumber = null)
 {
     return tournament
         .GetPlayerGames(player, roundNumber)
         .Select(game => new PlayerStats(
             wins: game.Winner == player ? 1 : 0,
             losses: game.Winner != player && game.Winner != null ? 1 : 0,
             draws: game.Winner == null ? 1 : 0
         ))
         .Aggregate(0, (sum, stats) => sum + (stats.Wins * GameWin + stats.Draws * GameDraw + stats.Losses * GameLoss));
 }
Exemplo n.º 2
0
        public decimal GetGameWinPercentage(Tournament tournament, Player player, int? roundNumber = null)
        {
            var achieved = GetGamePoints(tournament, player, roundNumber);

            var maximum = tournament
                .GetPlayerGames(player, roundNumber)
                .Count() * GameWin;

            if(maximum == 0)
                return 0.33m;

            var rawPercentage = achieved / (decimal)maximum;

            // Game win percentage is capped at 0.33 on the low end
            return Math.Max(0.33m, rawPercentage);
        }