Пример #1
0
            public override void Trigger(IGame game, IEffectHandle handle)
            {
                foreach (var player in game.Players)
                {
                    //TODO: Check for IDuringDrawingCards effects here

                    var drawEffect = new DrawingCardsEffect(game, player, 1);
                    var drawHandle = drawEffect.GetHandle(game);
                    game.AddEffect(drawEffect);
                    game.TriggerEffect(drawHandle);
                }

                handle.Resolve(GetCompletedStatus());
            }
Пример #2
0
        private void EachPlayerDrawsCards()
        {
            var playerDrawOptions = new Dictionary<Guid, Tuple<bool, uint>>();

            foreach (var player in Game.Players)
            {
                playerDrawOptions[player.StateId] = new Tuple<bool, uint>(true, 1);
            }

            var playersDrawingCards = new PlayersDrawingCards(Game, playerDrawOptions);

            foreach (var card in Game.GetCardsInPlayWithEffect<ICardInPlay, IDuringDrawingResourceCards>())
            {
                foreach (var effect in card.BaseCard.Text.Effects.OfType<IDuringDrawingResourceCards>())
                {
                    effect.DuringDrawingResourceCards(playersDrawingCards);
                }
            }

            foreach (var player in Game.Players)
            {
                if (!playersDrawingCards.Players.Contains(player.StateId))
                    continue;

                uint numberOfCards = playersDrawingCards.PlayerCanDrawCards(player.StateId) ?
                    playersDrawingCards.GetNumberOfCards(player.StateId)
                    : 0;

                if (numberOfCards > 0)
                {
                    var drawCardsEffect = new DrawingCardsEffect(Game, player, numberOfCards);
                    var drawCardsHandle = drawCardsEffect.GetHandle(Game);
                    Game.TriggerEffect(drawCardsHandle);

                    //var gandalf = player.Deck.Cards.Where(x => x.Title == "Gandalf").FirstOrDefault();
                    //if (gandalf != null)
                    //{
                    //    player.Deck.RemoveFromDeck(gandalf);
                    //    player.Hand.AddCards(new List<IPlayerCard> { gandalf });
                    //}

                    //var sneakAttack = player.Deck.Cards.Where(x => x.Title == "Sneak Attack").FirstOrDefault();
                    //if (sneakAttack != null)
                    //{
                    //    player.Deck.RemoveFromDeck(sneakAttack);
                    //    player.Hand.AddCards(new List<IPlayerCard> { sneakAttack });
                    //}
                }
            }
        }