public bool CanDiscard(Card card) { if (DiscardPileTop == null) return true; return card.Number == DiscardPileTop.Number || card.Type != CardType.Number && card.Type == DiscardPileTop.Type || card.Color == DiscardPileTop.Color || card.Color == CardColor.Black; }
internal void Discard(Card card) { if (!CanDiscard(card)) throw new WrongCardException() { Card = card }; _discardPile.Add(card); if (card.Type != CardType.Number) if (SpecialCardDiscarded != null) { var eventArgs = new SpecialCardDiscardedEventArgs(card.Type); SpecialCardDiscarded(this, eventArgs); if (DiscardPileTop.Color == CardColor.Black) DiscardPileTop.Color = eventArgs.ChoosenColor.Value; } }
internal void UndoDiscard(int index, Card card) { _cards.Insert(index, card); }