示例#1
0
        public override async Task <GameResponse> DoPlay(GameRequest request, ServerCallContext context)
        {
            _logger.LogInformation($"Player {request.Username} picked {ResultsDao.ToText(request.Pick)} against {request.Challenger}.");

            var challenger = _challengersService.SelectChallenger(request);

            var result = new GameResponse()
            {
                Challenger = request.Challenger,
                User       = request.Username,
                UserPick   = request.Pick
            };

            var pick = await challenger.Pick(GetContext(context), request.TwitterLogged, request.Username);

            _logger.LogInformation($"Challenger {result.Challenger} picked {ResultsDao.ToText(pick.Value)} against {request.Username}.");

            result.ChallengerPick = pick.Value;
            result.IsValid        = IsValid(pick);
            result.Result         = !result.IsValid ? Result.Player : _gameService.Check(result.UserPick, result.ChallengerPick);
            _logger.LogInformation($"Result of User {request.Username} vs Challenger {result.Challenger}, winner: {result.Result}");

            if (result.IsValid && request.TwitterLogged)
            {
                await _resultsDao.SaveMatch(pick, request.Username, request.Pick, result.Result);
            }

            return(result);
        }
示例#2
0
 public GameManagerService(
     IChallengerService challengers,
     IGameService gameService,
     ResultsDao resultsDao,
     ILogger <GameManagerService> logger
     )
 {
     _challengersService = challengers;
     _gameService        = gameService;
     _resultsDao         = resultsDao;
     _logger             = logger;
 }
示例#3
0
        private static bool IsValid(PickDto pick)
        {
            if (pick.Value > 4 || pick.Value < 0)
            {
                return(false);
            }

            if (pick.Text.ToLowerInvariant() != ResultsDao.ToText(pick.Value).ToLowerInvariant())
            {
                return(false);
            }

            return(true);
        }
示例#4
0
 public GamesController(ResultsDao resultDao)
 {
     _resultDao = resultDao;
 }