RevealCardsFromDeck() 개인적인 메소드

private RevealCardsFromDeck ( int cardCount, GameState gameState ) : void
cardCount int
gameState GameState
리턴 void
예제 #1
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(5, gameState);
     Card cardType = gameState.players.PlayerLeft.actions.BanCardToDrawnIntoHandFromRevealedCards(gameState);
     if (!currentPlayer.cardsBeingRevealed.HasCard(cardType))
     {
         throw new Exception("Must ban a card currently being revealed");
     }
     currentPlayer.MoveRevealedCardToDiscard(cardType, gameState);
     currentPlayer.MoveAllRevealedCardsToHand();
 }
예제 #2
0
        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);
        }
예제 #3
0
        public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
        {
            Card cardType = currentPlayer.RequestPlayerNameACard(gameState);
            currentPlayer.RevealCardsFromDeck(3, gameState);

            while (currentPlayer.cardsBeingRevealed.HasCard(cardType))
            {
                currentPlayer.MoveRevealedCardToTrash(cardType, gameState);
            }

            currentPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState);
        }
예제 #4
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(4);
     currentPlayer.AddCoins(currentPlayer.cardsBeingRevealed.CountTypes);
     currentPlayer.MoveRevealedCardsToDiscard(gameState);
 }
예제 #5
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(4);
     currentPlayer.MoveRevealedCardsToHand(card => card.isVictory);
     currentPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState);
 }
예제 #6
0
 private static void AttackAction(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState)
 {
     otherPlayer.RevealCardsFromDeck(2, gameState);
     otherPlayer.RequestPlayerTrashRevealedCard(gameState, card => Card.DoesCardCost3To6(card, otherPlayer));
     otherPlayer.MoveRevealedCardsToDiscard(gameState);
 }
예제 #7
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(3);
     gameState.gameLog.PushScope();
     currentPlayer.RequestPlayerTrashRevealedCard(gameState);
     currentPlayer.RequestPlayerDiscardRevealedCard(gameState);
     currentPlayer.MoveRevealedCardToTopOfDeck();
     gameState.gameLog.PopScope();
 }
예제 #8
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(3);
     PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, actionChoice => actionChoice == PlayerActionChoice.Discard || actionChoice == PlayerActionChoice.PutInHand);
     switch (choice)
     {
         case PlayerActionChoice.Discard:
             {
                 currentPlayer.MoveRevealedCardsToDiscard(gameState);
                 currentPlayer.DrawAdditionalCardsIntoHand(3);
                 break;
             }
         case PlayerActionChoice.PutInHand:
             {
                 currentPlayer.MoveAllRevealedCardsToHand();
                 break;
             }
         default:
             throw new Exception();
     }
 }
예제 #9
0
        public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
        {
            currentPlayer.RevealCardsFromDeck(1);
            Card revealedCard = currentPlayer.cardsBeingRevealed.FirstOrDefault();
            if (revealedCard == null)
            {
                return;
            }

            if (revealedCard.isCurse || revealedCard.isRuins || revealedCard.isShelter || revealedCard.isVictory)
            {
                currentPlayer.MoveRevealedCardToHand(revealedCard);
            }
            else
            {
                currentPlayer.MoveRevealedCardToTopOfDeck();
            }
        }
예제 #10
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(3);
     currentPlayer.MoveRevealedCardsToDiscard(card => !card.isAction, gameState);
     currentPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState);
 }
예제 #11
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(2);
     // TODO: Require option to put ruins back.
     currentPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState);
 }
예제 #12
0
 public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState)
 {
     otherPlayer.RevealCardsFromDeck(2, gameState);
     PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, actionChoice => actionChoice == PlayerActionChoice.Discard || actionChoice == PlayerActionChoice.TopDeck);
     switch (choice)
     {
         case PlayerActionChoice.Discard:
             {
                 otherPlayer.MoveRevealedCardsToDiscard(gameState);
                 break;
             }
         case PlayerActionChoice.TopDeck:
             {
                 otherPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState);
                 break;
             }
         default:
             throw new Exception();
     }
 }
예제 #13
0
        public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState)
        {
            otherPlayer.RevealCardsFromDeck(2, gameState);

            if (!otherPlayer.CardsBeingRevealed.AnyWhere(card => card.isTreasure))
            {
                otherPlayer.GainCardFromSupply(Copper.card, gameState);
            }
            else
            {
                CardPredicate acceptableCard = card => card == Silver.card || card == Gold.card;
                Card trashedCard = currentPlayer.RequestPlayerTrashOtherPlayersRevealedCard(gameState, acceptableCard, otherPlayer);
                if (trashedCard != null)
                {
                    Card cardToGain = gameState.trash.RemoveCard(trashedCard);
                    currentPlayer.GainCard(gameState, cardToGain, DeckPlacement.Trash, DeckPlacement.Discard);
                }
            }

            otherPlayer.MoveRevealedCardsToDiscard(gameState);
        }
예제 #14
0
        public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
        {
            currentPlayer.RevealCardsFromDeck(4);

            while (currentPlayer.cardsBeingRevealed.Any())
            {
                if (currentPlayer.RequestPlayerTopDeckCardFromRevealed(gameState, true) == null)
                {
                    break;
                }
            }

            currentPlayer.MoveRevealedCardsToDiscard(gameState);
        }
예제 #15
0
        public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
        {
            currentPlayer.RevealCardsFromDeck(1);
            Card revealedCard  = currentPlayer.CardsBeingRevealed.First();

            currentPlayer.RequestPlayerDiscardRevealedCard(gameState);
            currentPlayer.MoveRevealedCardToTopOfDeck();

            if (revealedCard.isAction)
            {
                currentPlayer.AddActions(1);
            }

            if (revealedCard.isTreasure)
            {
                currentPlayer.AddCoins(1);
            }

            if (revealedCard.isVictory)
            {
                currentPlayer.DrawOneCardIntoHand();
            }
        }
예제 #16
0
        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);
        }
예제 #17
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     //currentPlayer.gameLog.LogDeck(gameState.players.CurrentPlayer);
     Card cardType = currentPlayer.GuessCardTopOfDeck(gameState);
     currentPlayer.RevealCardsFromDeck(1);
     if (currentPlayer.cardsBeingRevealed.HasCard(cardType))
     {
         currentPlayer.MoveRevealedCardToHand(cardType);
     }
     else
     {
         currentPlayer.MoveRevealedCardToTopOfDeck();
     }
 }
예제 #18
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(4, gameState);
     currentPlayer.MoveRevealedCardsToHand(card => card == Copper.card || card == Potion.card);
     currentPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState);
 }
예제 #19
0
 public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState)
 {
     otherPlayer.RevealCardsFromDeck(3, gameState);
     otherPlayer.MoveRevealedCardsToDiscard(card => card.isAction || card.isTreasure, gameState);
     otherPlayer.RequestPlayerPutRevealedCardsBackOnDeck(gameState);
 }
예제 #20
0
        public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState)
        {
            otherPlayer.RevealCardsFromDeck(2, gameState);

            Card trashedCard = currentPlayer.RequestPlayerTrashOtherPlayersRevealedCard(gameState, card => card.isTreasure, otherPlayer);

            if (trashedCard != null)
            {
                if (currentPlayer.actions.ShouldGainCard(gameState, trashedCard))
                {
                    Card cardToGain = gameState.trash.RemoveCard(trashedCard);
                    currentPlayer.GainCard(gameState, cardToGain, originalLocation:DeckPlacement.Trash, defaultPlacement:DeckPlacement.Discard);
                }
            }

            otherPlayer.MoveRevealedCardsToDiscard(gameState);
        }
예제 #21
0
 public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
 {
     currentPlayer.RevealCardsFromDeck(3, gameState);
     currentPlayer.RequestPlayerTrashRevealedCard(gameState, acceptableCard => true);
     currentPlayer.RequestPlayerDiscardRevealedCard(gameState);
     currentPlayer.MoveRevealedCardToTopOfDeck();
 }