Esempio n. 1
0
        internal void DiscardCard(Card card, GameState gameState, DeckPlacement source)
        {
            this.cardBeingDiscarded.AddCardToTop(card);

            if (source != DeckPlacement.Deck)
            {
                this.gameLog.PlayerDiscardCard(this, card, source);
                this.gameLog.PushScope();
                gameState.cardContextStack.PushCardContext(this, card, CardContextReason.CardBeingDiscarded);
                if (gameState.players.CurrentPlayer.PlayPhase != PlayPhase.Cleanup)
                {
                    card.DoSpecializedDiscardNonCleanup(this, gameState);
                }

                if (source == DeckPlacement.Play)
                {
                    card.DoSpecializedDiscardFromPlay(this, gameState);
                }
                gameState.cardContextStack.Pop();
                this.gameLog.PopScope();
            }

            Card cardBeingDiscarded = this.cardBeingDiscarded.DrawCardFromTop();
            if (cardBeingDiscarded != null)
            {
                this.discard.AddCard(card);
            }
        }