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 }); //} } } }
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()); }