public ICollection <RoundTileDto> Resolve(RoundResult source, RoundResultDto destination, ICollection <RoundTileDto> destMember, ResolutionContext context)
        {
            var roundId          = source.RoundId;
            var RoundPlayerTiles = _context.RoundTiles.Where(rt => rt.RoundId == roundId && rt.Owner == source.Player.UserName);

            return(_mapper.Map <ICollection <RoundTile>, ICollection <RoundTileDto> >(RoundPlayerTiles.ToList()));
        }
Exemple #2
0
        public void OnNext(RoundEnded ended)
        {
            var roundData  = ConvertRoundSettingsToDto(ended.Settings);
            var resultData = new RoundResultDto(ended.GameUuid, roundData, ended.Result.PlayerResults.Select(
                                                    pres => new PlayerRoundResultDto(pres.Guesses, pres.TricksWon, pres.Score)
                                                    ));

            _client.GameRoundEnded(resultData);
        }
Exemple #3
0
        public async Task <RoundResultDto> GetMoveAsync(bool isFirst)
        {
            if (RoundTimeOut)
            {
                throw new GameFinishedException(GameEndReason.RoundTimeOut);
            }
            if (IsFinished)
            {
                throw new GameFinishedException(GameEndReason.RivalLeftGame);
            }
            if (Rounds.Count == 0)
            {
                throw new MoveException("User has not made a move yet");
            }
            await _lockSlim.WaitAsync();

            try
            {
                var lastRound = Rounds[Rounds.Count - 1];
                if (lastRound.Player1Move == null || lastRound.Player2Move == null)
                {
                    return(null);
                }
                if (isFirst)
                {
                    var result = new RoundResultDto()
                    {
                        OpponentMove = lastRound.Player2Move.ToString(),
                        Result       = lastRound.WinType == WinType.Draw
                                ? RoundResultFromUserSide.Draw
                                : lastRound.WinType == WinType.FirstPlayer
                                    ? RoundResultFromUserSide.YouWin
                                    : RoundResultFromUserSide.OpponentWin
                    };
                    return(result);
                }
                else
                {
                    var result = new RoundResultDto()
                    {
                        OpponentMove = lastRound.Player1Move.ToString(),
                        Result       = lastRound.WinType == WinType.Draw
                                ? RoundResultFromUserSide.Draw
                                : lastRound.WinType == WinType.SecondPlayer
                                    ? RoundResultFromUserSide.YouWin
                                    : RoundResultFromUserSide.OpponentWin
                    };
                    return(result);
                }
            }
            finally
            {
                _lockSlim.Release();
            }
        }
Exemple #4
0
        public Task GameRoundEnded(RoundResultDto data)
        {
            var settings = new EumelRoundSettings(data.GameRound.StartingPlayer, data.GameRound.TricksToPlay);
            var res      = new RoundResult(data.PlayerResults.Select(
                                               player => new PlayerRoundResult(player.Guesses, player.TricksWon, player.Score)
                                               ).ToList());
            var e = new RoundEnded(data.GameId, settings, res);

            _gameSeriesEventCallback(e);
            return(Task.CompletedTask);
        }
        public void PrintResult(RoundResultDto result)
        {
            string       resultString = "";
            ConsoleColor color        = ConsoleColor.White;

            switch (result.Result)
            {
            case 1:
                _sessionResults.WinCount++;
                resultString = "Win";
                color        = ConsoleColor.Green;
                break;

            case 0:
                _sessionResults.DrawCount++;
                resultString = "Draw";
                color        = ConsoleColor.Yellow;
                break;

            case -1:
                _sessionResults.LossesCount++;
                resultString = "Lose";
                color        = ConsoleColor.Red;
                break;
            }

            PrintHeader();

            MenuLibrary.WriteColor($"\nYour move: ", ConsoleColor.White);
            MenuLibrary.WriteLineColor($"{_currentMove}", ConsoleColor.DarkCyan);

            MenuLibrary.WriteColor($"Opponent move: ", ConsoleColor.White);
            MenuLibrary.WriteLineColor($"{result.OpponentMove}", ConsoleColor.DarkCyan);

            MenuLibrary.WriteColor($"\nResult: ", ConsoleColor.White);
            MenuLibrary.WriteLineColor(resultString, color);

            MenuLibrary.PressAnyKey();
        }