public static IActivity SelectXCardsToTrash(TurnContext context, Player player, int count, ICard source, Action afterTrash) { var activity = new SelectCardsActivity(context.Game.Log, player, string.Format("Select {0} card(s) to trash.", count), SelectionSpecifications.SelectExactlyXCards(count), source); activity.Hint = ActivityHint.TrashCards; activity.AfterCardsSelected = cards => { context.TrashAll(player, cards); afterTrash(); }; return(activity); }
public static ISelectCardsActivity PutCardOfTypeFromHandOnTopOfDeck(IGameLog log, Player player, string message, Type cardType, ICard source) { var spec = SelectionSpecifications.SelectExactlyXCards(1); spec.CardTypeRestriction = cardType; return(new SelectCardsActivity (log, player, message, spec, source) { AfterCardsSelected = cards => { var card = cards.Single(); player.Deck.MoveToTop(card); log.LogMessage("{0} put a {1} on top of the deck.", player.Name, card.Name); }, Hint = ActivityHint.RedrawCards }); }
public static IActivity SelectARevealedCardToPutOnTopOfDeck(IGameLog log, Player player, RevealZone revealZone, string message, ICard source) { return(new SelectFromRevealedCardsActivity(log, player, revealZone, message, SelectionSpecifications.SelectExactlyXCards(1), source) { AfterCardsSelected = cards => { player.Deck.MoveToTop(cards.Single()); if (revealZone.CardCount == 1) { var lastCard = revealZone.Single(); player.Deck.MoveToTop(lastCard); //log.LogMessage("{0} put a {1} on top.", player.Name, lastCard.Name); } }, Hint = ActivityHint.RedrawCards }); }
public static IActivity SelectACardToTrash(TurnContext context, Player player, ICard source, Action <ICard> afterTrash) { var activity = new SelectCardsActivity(context.Game.Log, player, "Select a card to trash.", SelectionSpecifications.SelectExactlyXCards(1), source); activity.Hint = ActivityHint.TrashCards; activity.AfterCardsSelected = cards => { foreach (var cardToTrash in cards) { context.Trash(activity.Player, cardToTrash); } afterTrash(cards.Single()); }; return(activity); }
public static ISelectCardsActivity SelectActionToPlayMultipleTimes(TurnContext context, Player player, IGameLog log, ICard source, int count) { var activity = new SelectCardsActivity( log, player, string.Format("Select an action to play {0} times", count), SelectionSpecifications.SelectExactlyXCards(1), source); activity.Hint = ActivityHint.PlayCards; activity.Specification.CardTypeRestriction = typeof(IActionCard); activity.AfterCardsSelected = cards => { var actionCard = cards.OfType <IActionCard>().Single(); log.LogMessage("{0} selected {1} to be played {2} times.", player.Name, actionCard.Name, count); actionCard.MoveTo(context.ActivePlayer.PlayArea); count.Times(() => context.AddEffect(source, new PlayCardEffect(actionCard))); }; return(activity); }