public MakeFirstMoveResult MakeFirstMove(Guid playerId, IReadOnlyCollection <int> cardIds, int rank) { if (cardIds == null) { throw new ArgumentNullException(nameof(cardIds)); } var player = _playerRepository.GetById(playerId); if (player == null) { throw new NullReferenceException($"Отсутствует пользователь с id = {playerId}"); } var gameTable = _gameTableRepository.GetByPlayer(player); if (gameTable == null) { throw new Exception($"Игрок с Id = {playerId} не находится за игровым столом"); } var cards = gameTable.GetPlayerCards(playerId, cardIds); var move = new FirstMove(cards.Select(c => new PlayingCard(c.Id, c.Suit, c.Rank)).ToList(), (PlayingCardRank)rank, playerId); gameTable.MakeFirstMove(move); return(new MakeFirstMoveResult() { NextMoverId = gameTable.CurrentMover.Id, GameTableId = gameTable.Id, NextPossibleMoves = gameTable.GetNextPossibleMoves().Select(mt => MoveTypesUtils.GetMoveType(mt)).ToList() }); }
public MakeBeleiveMoveResult MakeBelieveMove(Guid playerId, int selectedCardId) { if (selectedCardId <= 0) { throw new ArgumentException(nameof(selectedCardId)); } var player = _playerRepository.GetById(playerId); if (player == null) { throw new NullReferenceException($"Отсутствует пользователь с id = {playerId}"); } var gameTable = _gameTableRepository.GetByPlayer(player); if (gameTable == null) { throw new Exception($"Игрок с Id = {playerId} не находится за игровым столом"); } var checkedCard = gameTable.GetCardFromCurrentRoundById(selectedCardId); var move = new BelieveMove(selectedCardId, playerId); gameTable.MakeBeleiveMove(move, out var takedLoserCards, out var loserId); return(new MakeBeleiveMoveResult() { GameTableId = gameTable.Id, NextMoverId = gameTable.CurrentMover.Id, NextPossibleMoves = gameTable.GetNextPossibleMoves().Select(mt => MoveTypesUtils.GetMoveType(mt)).ToList(), CheckedCard = new PlayingCardDto() { Id = checkedCard.Id, Rank = (int)checkedCard.Rank, Suit = (int)checkedCard.Suit }, LoserId = loserId, TakedLoserCards = takedLoserCards.Select(c => new PlayingCardDto() { Id = c.Id, Rank = (int)c.Rank, Suit = (int)c.Suit }).ToList() }); }