private void PlaySameOrHigher(IEnumerable <Card> cards) { foreach (var card in cards) { RemoveCardFromHand(card); PickUpPack.Add(card); } }
private void PlayTenOr4OfSameRank(IEnumerable <Card> cards) { ClearedCards.AddRange(PickUpPack); PickUpPack.Clear(); foreach (Card card in cards) { RemoveCardFromHand(card); ClearedCards.Add(card); } }
private void PlayThree(IEnumerable <Card> cards) { foreach (Card card in cards) { RemoveCardFromHand(card); ClearedCards.Add(card); } var nextPlayer = GetNextPlayer(); nextPlayer.Hand.InHandCards.AddRange(PickUpPack); PickUpPack.Clear(); }
private void ValidatePlayedCards(Guid playerId, List <Card> cards) { Player player = Players.Single(o => o.Id.Equals(playerId)); if (!player.IsThisPlayersTurn) { throw new InvalidOperationException("It's not this player's turn. "); } if (cards.Count > 1 && !RuleEngine.AreAllCardsEqual(cards)) { throw new InvalidOperationException("Can only play cards of the same rank. "); } Card topOfPickUpPack = PickUpPack != null && PickUpPack.Count > 0 ? PickUpPack.Last() : null; if (!RuleEngine.IsCardPlayable(cards[0], topOfPickUpPack)) { throw new InvalidCardException("Can't play a " + cards[0].Rank); } }
private void CheckNextPlayerCanPlay() { var nextPlayer = GetNextPlayer(); List <Card> inPlayCards = GetActiveHandPart(nextPlayer); Card topOfPickUpPack = PickUpPack != null && PickUpPack.Count > 0 ? PickUpPack.Last() : null; nextPlayer.IsAbleToPlay = nextPlayer.PlayerState.Equals(PlayerState.PlayingFaceDownCards) || RuleEngine.AreAnyCardsPlayable(inPlayCards, topOfPickUpPack); }
private void PickEmUp() { CurrentPlayer.Hand.InHandCards.AddRange(PickUpPack); PickUpPack.Clear(); }