using DominionBase.Enums; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Menagerie { public class March : Event { public March() : base(Source.Menagerie, 3, Traits.None) { } public override void Bought(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Bought(player); var discardPileCards = player.DiscardPile.LookThrough(c => true); player._Game.SendMessage(player, this, "LookThroughDiscard", discardPileCards.ToArray()); var actions = discardPileCards.Where(c => c.Category.HasFlag(Categories.Action)); if (actions.Any()) { var choice = new Choice(Resource.ChooseActionPlay, this, actions, ChoiceOutcome.Select, player, minimum: 0); var result = player.MakeChoice(choice); if (result.Cards.Any()) { player.DiscardPile.Retrieve(player, c => result.Cards.Contains(c)); player.Actions++; var cardToPlay = result.Cards[0]; var previousPlayerMode = player.PutCardIntoPlay(cardToPlay); player.PlayCard(cardToPlay.LogicalCard, previousPlayerMode); return; } } player.PlayNothing(); } } }