public void HandleCardDiscard(Player p, List<Card> cards, DiscardReason reason = DiscardReason.Discard)
{
cards = new List<Card>(cards);
CardsMovement move = new CardsMovement();
move.Cards = new List<Card>(cards);
foreach (Card c in cards)
{
c.Log.Source = p;
if (reason == DiscardReason.Discard)
c.Log.GameAction = GameAction.Discard;
else if (reason == DiscardReason.Play)
c.Log.GameAction = GameAction.Play;
else if (reason == DiscardReason.Use)
c.Log.GameAction = GameAction.Use;
}
List<Card> backup = new List<Card>(move.Cards);
move.To = new DeckPlace(null, DeckType.Discard);
PlayerAboutToDiscardCard(p, move.Cards, reason);
MoveCards(move, false, GameDelays.Discard);
if (p != null)
{
PlayerLostCard(p, move.Cards);
PlayerDiscardedCard(p, backup, reason);
}
}