private MoveCardToTrash ( Dominion.Card card, |
||
card | Dominion.Card | |
gameState | ||
return | void |
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2); Card cardtoTrash = null; CardPredicate acceptableCards = card => card.isTreasure; if (otherPlayer.cardsBeingRevealed.HasCard(acceptableCards)) { Card cardTypeToTrash = currentPlayer.actions.GetCardFromRevealedCardsToTrash(gameState, otherPlayer, acceptableCards); cardtoTrash = otherPlayer.cardsBeingRevealed.RemoveCard(cardTypeToTrash); if (cardtoTrash == null) { throw new Exception("Must choose a revealed card to trash"); } if (!acceptableCards(cardtoTrash)) { throw new Exception("Player Must choose a treasure card to trash"); } otherPlayer.MoveCardToTrash(cardtoTrash, gameState); } if (cardtoTrash != null) { if (currentPlayer.actions.ShouldGainCard(gameState, cardtoTrash)) { Card cardToGain = gameState.trash.RemoveCard(cardtoTrash); currentPlayer.GainCard(gameState, cardToGain, originalLocation:DeckPlacement.Trash, defaultPlacement:DeckPlacement.Discard); } } otherPlayer.MoveRevealedCardsToDiscard(gameState); }
internal Card RequestPlayerTrashOtherPlayersRevealedCard(GameState gameState, CardPredicate acceptableCard, PlayerState otherPlayer) { Card cardtoTrash = null; if (otherPlayer.cardsBeingRevealed.HasCard(acceptableCard)) { Card cardTypeToTrash = this.actions.GetCardFromOtherPlayersRevealedCardsToTrash(gameState, otherPlayer, acceptableCard); cardtoTrash = otherPlayer.cardsBeingRevealed.RemoveCard(cardTypeToTrash); if (cardtoTrash == null) { throw new Exception("Must choose a revealed card to trash"); } if (!acceptableCard(cardtoTrash)) { throw new Exception("Card constraint doesnt match."); } otherPlayer.MoveCardToTrash(cardtoTrash, gameState); } return cardtoTrash; }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2); Card cardtoTrash = null; CardPredicate acceptableCards = card => card == Silver.card || card == Gold.card; if (otherPlayer.cardsBeingRevealed.HasCard(acceptableCards)) { Card cardTypeToTrash = currentPlayer.actions.GetCardFromRevealedCardsToTrash(gameState, otherPlayer, acceptableCards); cardtoTrash = otherPlayer.cardsBeingRevealed.RemoveCard(cardTypeToTrash); if (cardtoTrash == null) { throw new Exception("Must choose a revealed card to trash"); } if (!acceptableCards(cardtoTrash)) { throw new Exception("Player Must choose a treasure card to trash"); } otherPlayer.MoveCardToTrash(cardtoTrash, gameState); } if (!otherPlayer.CardsBeingRevealed.Where(card => card.isTreasure).Any()) { otherPlayer.GainCardFromSupply(Copper.card, gameState); } if (cardtoTrash != null) { Card cardToGain = gameState.trash.RemoveCard(cardtoTrash); currentPlayer.GainCard(gameState, cardToGain, DeckPlacement.Trash, DeckPlacement.Discard); } otherPlayer.MoveRevealedCardsToDiscard(gameState); }