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");
}
}