Dominion.GameState.PlayerGainCardFromSupply C# (CSharp) Method

PlayerGainCardFromSupply() public method

public PlayerGainCardFromSupply ( Dominion.Card cardType, PlayerState playerState, DeckPlacement defaultLocation = DeckPlacement.Discard, GainReason gainReason = GainReason.Gain ) : Dominion.Card
cardType Dominion.Card
playerState PlayerState
defaultLocation DeckPlacement
gainReason GainReason
return Dominion.Card
        public Card PlayerGainCardFromSupply(Card cardType, PlayerState playerState, DeckPlacement defaultLocation = DeckPlacement.Discard, GainReason gainReason = GainReason.Gain)
        {
            bool canGainCardFromSupply = CanGainCardFromSupply(cardType);
            PileOfCards pile = this.GetPile(cardType);
            if (pile == null)
            {
                System.Diagnostics.Debug.Assert(!canGainCardFromSupply);
                return null;
            }

            if (GetPile(this.supplyPiles, cardType) != null)
                this.hasPileEverBeenGained[pile] = true;

            if (!IsCardEqualOrOfType(pile.TopCard(), cardType))
            {
                System.Diagnostics.Debug.Assert(!canGainCardFromSupply);
                return null;
            }

            Card card = pile.DrawCardFromTop();
            if (card == null)
            {
                System.Diagnostics.Debug.Assert(!canGainCardFromSupply);
                return null;
            }

            System.Diagnostics.Debug.Assert(canGainCardFromSupply);

            playerState.GainCard(this, card, DeckPlacement.Supply, defaultLocation, gainReason);

            return card;
        }

Usage Example

 internal void GainCardsFromSupply(GameState gameState, Card cardType, int count, DeckPlacement defaultLocation = DeckPlacement.Discard)
 {
     for (int i = 0; i < count; ++i)
         gameState.PlayerGainCardFromSupply(cardType, this, defaultLocation);
 }
All Usage Examples Of Dominion.GameState::PlayerGainCardFromSupply