Dominion.PlayerState.PlaceCardFromPlacement C# (CSharp) Method

PlaceCardFromPlacement() private method

private PlaceCardFromPlacement ( CardPlacementPair pair, GameState gameState, DeckPlacement originalSource ) : void
pair CardPlacementPair
gameState GameState
originalSource DeckPlacement
return void
        private void PlaceCardFromPlacement(CardPlacementPair pair, GameState gameState, DeckPlacement originalSource)
        {
            gameLog.CardWentToLocation(pair.placement);
            switch (pair.placement)
            {
                case DeckPlacement.Discard: this.discard.AddCard(pair.card); break;
                case DeckPlacement.Hand: this.hand.AddCard(pair.card); break;
                case DeckPlacement.Trash: this.MoveCardToTrash(pair.card, gameState); break;
                case DeckPlacement.Play: this.PlayCard(pair.card, gameState); break;
                case DeckPlacement.TopOfDeck: this.deck.AddCardToTop(pair.card); break;
                case DeckPlacement.None:
                {
                    switch (originalSource)
                    {
                        case DeckPlacement.Supply: this.ReturnCardToSupply(pair.card, gameState); break;
                        case DeckPlacement.Trash: this.MoveCardToTrash(pair.card, gameState); break;
                        default: throw new NotImplementedException();
                    }
                    break;
                }
                default: throw new Exception("Invalid case");
            }
        }
PlayerState