using DominionBase.Enums; using DominionBase.Piles; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Nocturne { public class TheMoonsGift : Boon { public TheMoonsGift() : base(Source.Nocturne, Traits.CardOrdering) { } public override bool Receive(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Receive(player); var discardPileCards = player.DiscardPile.LookThrough(c => true); player._Game.SendMessage(player, this, discardPileCards.ToArray()); var choiceTop = new Choice(Resource.ChooseCardToTopdeck, this, discardPileCards, ChoiceOutcome.Select, player, minimum: 0); var resultTop = player.MakeChoice(choiceTop); if (resultTop.Cards.Any()) player.AddCardsToDeck(player.DiscardPile.Retrieve(player, c => resultTop.Cards.Contains(c)), DeckPosition.Top); return true; } } }