Beispiel #1
0
        public void DrawCards(Player player, int amount, bool usePlayerAction = false)
        {
            var action = new DrawCardsAction(player, amount, usePlayerAction);

            if (Container.GetSystem <ActionSystem>().IsActive)
            {
                Container.AddReaction(action);
            }
            else
            {
                Container.Perform(action);
            }
        }
Beispiel #2
0
        void OnPerformFatigue(object sender, object args)
        {
            var action = args as FatigueAction;
            var player = action.Player as Player;

            player.fatique++;

            var card = CardFactory.CreateFatigueCard(player.index, player.fatique);

            ChangeZone(card, Zones.Deck);

            var reaction = new DrawCardsAction(player, 1);

            Container.AddReaction(reaction);

            /*var damageTarget = action.Player.party[0] as IDestructable;
             * var damageAction = new DamageAction(damageTarget, player.fatique);
             * Container.AddReaction(damageAction);*/
        }
Beispiel #3
0
        IEnumerator DrawCards(DrawCardsAction action)
        {
            var player    = action.Player as Player;
            int deckCount = player[Zones.Deck].Count;

            action.cards = new List <Card>();
            for (int i = 0; i < action.amount; i++)
            {
                if (player.hand.Count < player.maxHand)  //Has space in hand
                {
                    if (player.deck.Count == 0)          //Deck is empty
                    {
                        if (player.graveyard.Count == 0) //Graveyard empty, draw fatigue
                        {
                            var fatigueAction = new FatigueAction(player);
                            Container.AddReaction(fatigueAction);
                        }
                        else //Shuffle graveyard into deck
                        {
                            for (int j = player.graveyard.Count - 1; j >= 0; j--)
                            {
                                ChangeZone(player.graveyard[j], Zones.Deck);
                            }
                            this.PostNotification(DeckShuffledNotification, player);
                        }
                    }
                    if (player.deck.Count > 0) //Draw
                    {
                        var draw = player[Zones.Deck].Draw(1)[0];
                        action.cards.Add(draw);
                        ChangeZone(draw, Zones.Hand);
                        this.PostNotification(DeckChangedNotification, player);
                    }
                }
                else //Overdraw
                {
                    var overDrawAction = new OverdrawAction(player, 1);
                    Container.AddReaction(overDrawAction);
                }
                yield return(null);
            }
        }
    void DrawCards(Player player, int amount)
    {
        var action = new DrawCardsAction(player, amount);

        container.AddReaction(action);
    }
Beispiel #5
0
        private void DrawCards(Player player, int amount)
        {
            var drawCardsAction = new DrawCardsAction(player, amount);

            Container.AddReaction(drawCardsAction);
        }