Example #1
0
        public override void Run(GameState gameState)
        {
            for (int i = 0; i < this.DrawCount; i++)
            {
                var drawEventPlayer1 = new PlayerDrawCardEvent(Player.Player1);
                var drawEventPlayer2 = new PlayerDrawCardEvent(Player.Player2);

                EventRunner.RunEvent(drawEventPlayer1, gameState);
                EventRunner.RunEvent(drawEventPlayer2, gameState);
            }
        }
Example #2
0
        public override void Run(GameState gameState)
        {
            if (gameState == null)
            {
                throw new System.ArgumentNullException(nameof(gameState));
            }

            var dealDamageEvent = new CardAttackDealDamageEvent(this.Target, this.Attacker);

            EventRunner.RunEvent(dealDamageEvent, gameState);

            // the deal damage event may have triggered other actions that killed the target.
            if (this.Target.Value.IsAlive)
            {
                var takeDamageEvent = new CardAttackTakeDamageEvent(this.Target, this.Attacker);
                EventRunner.RunEvent(takeDamageEvent, gameState);
            }
        }
Example #3
0
        public void DrawCard()
        {
            const int    StartingDeckSize = 10;
            const Player playerToDraw     = Player.Player2;

            var deck1 = new Deck().WithCardCount(StartingDeckSize);
            var deck2 = new Deck().WithCardCount(StartingDeckSize);

            var gameState = new GameState(deck1, deck2);

            int startingHandSize = gameState.GetHand(playerToDraw).Size;

            var drawEvent = new PlayerDrawCardEvent(playerToDraw);

            EventRunner.RunEvent(drawEvent, gameState);

            Assert.Equal(StartingDeckSize - 1, deck2.Size);
            Assert.Equal(startingHandSize + 1, gameState.GetHand(playerToDraw).Size);
        }