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