using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Collections.Generic; using System.Diagnostics.Contracts; using System.Globalization; using System.Linq; namespace DominionBase.Cards.Menagerie { public class Banish : Event { public Banish() : base(Source.Menagerie, 4, Traits.Exiler | Traits.RemoveFromHand) { } public override void Bought(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Bought(player); var choiceExile = new Choice(Resource.ChooseCardToExile, this, player.Hand, ChoiceOutcome.Trash, player); var resultExile = player.MakeChoice(choiceExile); if (resultExile.Cards.Any()) { var selectedCard = resultExile.Cards[0]; var options = new List(); for (var i = 1; i <= player.Hand[selectedCard.Name].Count; i++) options.Add(i.ToString(CultureInfo.InvariantCulture)); var choice = new Choice(Resource.ChooseExileCount.Replace("{card}", resultExile.Cards[0].ToString()), this, this, options, player); var result = player.MakeChoice(choice); var number = int.Parse(result.Options[0], CultureInfo.InvariantCulture); var toExile = player.RetrieveCardsFrom(DeckLocation.Hand, c => c.Name == selectedCard.Name, number); player.AddCardsInto(TypeClass.Exile, toExile); player._Game.SendMessage(player, this, "Exile", toExile.ToArray()); } } } }