public bool IsSnap(CardSet centralPile) { if (centralPile.Count() < 2) { return(false); } return(centralPile.Cards.ElementAt(centralPile.Cards.Count - 1).Rank == centralPile.Cards.ElementAt(centralPile.Cards.Count - 2).Rank); }
public bool IsSnap(CardSet centralPile) { if (centralPile.Count() < 2) { return(false); } var currentCardRank = centralPile.Cards.ElementAt(centralPile.Cards.Count - 1).Rank; return(centralPile.Cards.Count(c => c.Rank == currentCardRank) > 1); }
public void Resolve(IReactionScope scope) { var revealedTreasures = new CardSet(); 2.Times(() => { var revealedCard = scope.RevealCardFromDeck(); if (revealedCard.IsTreasure && !revealedTreasures.Contains(revealedCard)) { revealedTreasures.Add(revealedCard, scope); } }); if (revealedTreasures.Count() == 1) { scope.Publish(new TrashTreasureCardFromThief(TurnScope, scope, revealedTreasures.Single())); } else if (revealedTreasures.Count() == 2) { TurnScope.Publish(new ChooseTreasureCardToTrashFromThief(TurnScope, scope, revealedTreasures)); } }
public override void PlayAsAction(ITurnScope turnScope) { CardSet drawnTreasures = new CardSet(); CardSet revealedCards = new CardSet(); do { var card = turnScope.RevealCardFromTopOfDeck(); if (card.IsTreasure) { drawnTreasures.Add(card, turnScope); } else { revealedCards.Add(card, turnScope); } } while (drawnTreasures.Count() < 2); turnScope.PutCardsIntoHand(drawnTreasures); turnScope.PutCardsIntoDiscardPile(revealedCards); }
public override string ToString() { return(String.Format("{0}: {1}/{2}/({3}) H: {4}, P: {5}, Di: {6}, Dk {7}", Player.Name, Actions, Buys, Coins, Hand.Count(), _cardsInPlay.Count(), _player.DiscardPile.Count(), _player.Deck.Count())); }