コード例 #1
0
        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);
        }
コード例 #2
0
        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
            });
        }
コード例 #3
0
 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
     });
 }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }