namespace MauMau_Server.Mau; public class Game { public readonly Deck Deck = new(); public Card CurrentCard; public List Hand; public Game() { CurrentCard = Deck.DrawCard(); Deck.AddCardToUsedDeck(CurrentCard); Hand = Deck.DrawCards(8); } public void PlayCard(Card card) { if (!IsCardInHand(Hand, card) || !IsCardPlayable(CurrentCard, card)) return; Deck.AddCardToUsedDeck(card); Hand.Remove(GetSameCardFromHand(Hand, card)); CurrentCard = card; } private Card GetSameCardFromHand(IEnumerable hand, Card card) { return hand.FirstOrDefault(handCard => IsSameCardType(handCard, card) && IsSameCardValue(handCard, card)); } private bool IsCardPlayable(Card currentCard, Card playedCard) { return IsSameCardType(currentCard, playedCard) || IsSameCardValue(currentCard, playedCard); } private bool IsCardInHand(IEnumerable hand, Card card) { return hand.Any(handCard => IsSameCardType(handCard, card) && IsSameCardValue(handCard, card)); } private static bool IsSameCardType(Card card1, Card card2) { return card1.CardType == card2.CardType; } private static bool IsSameCardValue(Card card1, Card card2) { return card1.CardValue == card2.CardValue; } }