Exemple #1
0
        public void AttackTest()
        {
            var playerCards = new Stack<Card>();
            var playerTowerCard = new Card(0, 14, 0) {Name = "Zodiac", CardType = CardType.Tower};
            playerCards.Push(playerTowerCard);
            Deck playerDeck = new Deck(true, playerCards);
            playerDeck.Commander = new Commander(0, 20, 0);

            var enemyCards = new Stack<Card>();
            var towerAttackCard = new Card(1, 17, 0) { Name = "Wham Tower Attacker" };
            towerAttackCard.Skills.Add(new AttackSkill()
            {
                Power = 2,
                Repeat = 0,
                SkillArea = SkillArea.Single,
                SkillType = SkillType.Siege
            });
            enemyCards.Push(towerAttackCard);

            Deck enemyDeck = new Deck(false, enemyCards);
            enemyDeck.Commander = new Commander(0, 20, 0);

            playerDeck.DrawNewCard();
            enemyDeck.DrawNewCard();

            towerAttackCard.Skills.First().Attack(enemyDeck, playerDeck, towerAttackCard);

            Assert.AreEqual(12, playerTowerCard.Health);
        }
Exemple #2
0
        private static Deck PlayerTurn(Deck currentPlayerDeck, Deck currentEnemyDeck)
        {
            // Draw new card
            currentPlayerDeck.DrawNewCard();

            // Commander turn
            // Commander doesn't have Basic attack, however does skill attacks
            // TODO: Commander turn

            // Play Deck
            foreach (var card in currentPlayerDeck.PlayedCards)
            {
                if (card.CanAttack())
                {
                    if (card.CardType == CardType.Tower)
                    {
                        // No Basic attack, only skills
                        // TODO: Tower attack
                    }
                    else
                    {
                        // Do Skill Attack first
                        foreach (var skill in card.Skills)
                        {
                            skill.Attack(currentPlayerDeck, currentEnemyDeck, card);
                        }

                        // Play Basic Attack
                        Deck deck = card.BasicAttack(currentPlayerDeck, currentEnemyDeck);

                        // Check if there is winner
                        if (deck != null)
                            return deck;

                    }
                }
            }

            return null;
        }