public void Battle_DeterminesWinnerOne_ReturnsInt()
        {
            //Arrange
            FireElve    c1 = new FireElve();
            Dragon      c2 = new Dragon();
            Orc         c3 = new Orc();
            Wizzard     c4 = new Wizzard();
            FireSpell   c5 = new FireSpell();
            WaterSpell  c6 = new WaterSpell();
            Goblin      c7 = new Goblin();
            NormalSpell c8 = new NormalSpell();

            List <Card> deckOne = new List <Card>();
            List <Card> deckTwo = new List <Card>();

            deckOne.Add(c7); deckOne.Add(c3); deckOne.Add(c8); deckOne.Add(c5); deckOne.Add(c6);
            deckTwo.Add(c1); deckTwo.Add(c2); deckTwo.Add(c3); deckTwo.Add(c4); deckTwo.Add(c5);


            BattleHandler game = new BattleHandler(deckOne, deckTwo);

            // Act
            int winner = game.Battle();

            // Assert
            Assert.AreEqual(1, winner);
        }
        public void Battle_ReturnLogsBattleOne_ReturnsString()
        {
            //Arrange
            FireElve    c1 = new FireElve();
            Dragon      c2 = new Dragon();
            Orc         c3 = new Orc();
            Wizzard     c4 = new Wizzard();
            FireSpell   c5 = new FireSpell();
            WaterSpell  c6 = new WaterSpell();
            Goblin      c7 = new Goblin();
            NormalSpell c8 = new NormalSpell();

            List <Card> deckOne = new List <Card>();
            List <Card> deckTwo = new List <Card>();

            deckOne.Add(c7); deckOne.Add(c3); deckOne.Add(c8); deckOne.Add(c5); deckOne.Add(c6);
            deckTwo.Add(c1); deckTwo.Add(c2); deckTwo.Add(c3); deckTwo.Add(c4); deckTwo.Add(c5);


            BattleHandler game   = new BattleHandler(deckOne, deckTwo);
            int           winner = game.Battle(); // Player One wins here!

            // Act
            List <String> logEntrys = game.ReturnLogs();
            String        lastLog   = logEntrys.Last();

            // Assert
            Assert.IsNotNull(lastLog);
        }
Beispiel #3
0
 public void Setup()
 {
     _fireSpell    = new FireSpell(CardType.Spell, ElementType.Fire, 20, "Hotter Spell", 0, 1);
     _kraken       = new Kraken(CardType.Monster, ElementType.Water, 170, "Krakie dakie do whatcha gonna do", CardProperty.Kraken, 1);
     _goblinWater  = new Goblin(CardType.Monster, ElementType.Water, 100, "Gobster the Robster", CardProperty.Goblin, 1);
     _goblinNormal = new Goblin(CardType.Monster, ElementType.Normal, 100, "Gobster the Robster", CardProperty.Goblin, 1);
 }
 public void LightOnFire(FireSpell source)
 {
     burning      = true;
     timeBurning  = 0f;
     this.source  = source;
     fireParticle = Instantiate(BurningPrefab, transform.position, transform.rotation, transform);
     fireParticle.transform.localScale = new Vector3(3, 3, 3);
 }
Beispiel #5
0
    void launchFire(Entity target)
    {
        Vector3 pos = player_.getShotPos().position;

        GameObject a = Instantiate(fireSpell, pos, Quaternion.identity);

        FireSpell s = a.GetComponent <FireSpell>();

        s.direction = player_.getShootingDirection();
        s.target    = target;
    }
        [Test] // Knight against FIRE Spell -> expect Dmg halved
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            Knight    paladin    = new Knight();
            FireSpell enemySpell = new FireSpell();
            //Act
            int paladinDamage  = paladin.CalcDamage(enemySpell);
            int expectedDamage = 5;

            //Assert
            Assert.AreEqual(expectedDamage, paladinDamage);
        }
Beispiel #7
0
    public SpellSystem(Transform root, Rigidbody2D rb)
    {
        _root = root;
        _rb = rb;

        _fireSpell = new FireSpell();
        _waterSpell = new WaterSpell();
        _earthSpell = new EarthSpell();
        _airSpell = new AirSpell();

        _activeSpell = _fireSpell;
    }
Beispiel #8
0
        [Test] // Dragon against FIRE Spell -> expect Dmg stays the same
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            Dragon    smaug      = new Dragon();
            FireSpell enemySpell = new FireSpell();
            //Act
            int smaugDamage    = smaug.CalcDamage(enemySpell);
            int expectedDamage = 15;

            //Assert
            Assert.AreEqual(expectedDamage, smaugDamage);
        }
Beispiel #9
0
        [Test] // FireElve against FIRE Spell -> expect Dmg stay the same
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            FireElve  elfi       = new FireElve();
            FireSpell enemySpell = new FireSpell();
            //Act
            int elfiDamage     = elfi.CalcDamage(enemySpell);
            int expectedDamage = 14;

            //Assert
            Assert.AreEqual(expectedDamage, elfiDamage);
        }
Beispiel #10
0
        [Test] // Orc against FIRE Spell -> expect Dmg halved
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            Orc       justOrc    = new Orc();
            FireSpell enemySpell = new FireSpell();
            //Act
            int justOrcDamage  = justOrc.CalcDamage(enemySpell);
            int expectedDamage = 4;

            //Assert
            Assert.AreEqual(expectedDamage, justOrcDamage);
        }
        [Test] // Enemy FIRE Spell against Kraken -> expect 0 enemy Dmg
        public void CalcEnemyDamage_AgainstFIRESpell_ReturnsInt()
        {
            //Arrange
            Kraken    leviathan  = new Kraken();
            FireSpell enemySpell = new FireSpell();
            //Act
            int enemyDamage    = enemySpell.CalcDamage(leviathan);
            int expectedDamage = 0;

            //Assert
            Assert.AreEqual(expectedDamage, enemyDamage);
        }
Beispiel #12
0
        [Test] // Wizzard against FIRE Spell -> expect Dmg stay the same
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            Wizzard   wiz        = new Wizzard();
            FireSpell enemySpell = new FireSpell();
            //Act
            int wizDamage      = wiz.CalcDamage(enemySpell);
            int expectedDamage = 12;

            //Assert
            Assert.AreEqual(expectedDamage, wizDamage);
        }
        [Test] // Kraken against FIRE Spell -> expect Dmg stays the same
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            Kraken    leviathan  = new Kraken();
            FireSpell enemySpell = new FireSpell();
            //Act
            int leviathanDamage = leviathan.CalcDamage(enemySpell);
            int expectedDamage  = 30;

            //Assert
            Assert.AreEqual(expectedDamage, leviathanDamage);
        }
Beispiel #14
0
        public void Test_FireElveShouldNotEvadeNonDragonAttack()
        {
            //arrange
            Card fireElve  = new FireElf("Tentakel", 50, ElementType.Normal);
            Card nonDragon = new FireSpell("Fireball", 20);

            //act
            bool hasEvaded = ((FireElf)fireElve).TryEvadeAttack(nonDragon);

            //assert
            Assert.IsFalse(hasEvaded);
        }
Beispiel #15
0
        [Test] // NormalSpell against FIRE Type -> expect Dmg halved
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            NormalSpell norm       = new NormalSpell();
            FireSpell   enemySpell = new FireSpell();
            //Act
            int normDamage     = norm.CalcDamage(enemySpell);
            int expectedDamage = 20;

            //Assert
            Assert.AreEqual(expectedDamage, normDamage);
        }
Beispiel #16
0
        [Test] // Goblin against FIRE Spell -> expect Dmg halved
        public void CalcDamage_AgainstFireSpell_ReturnsInt()
        {
            //Arrange
            Goblin    gobo       = new Goblin();
            FireSpell enemySpell = new FireSpell();
            //Act
            int goboDamage     = gobo.CalcDamage(enemySpell);
            int expectedDamage = 2;

            //Assert
            Assert.AreEqual(expectedDamage, goboDamage);
        }
Beispiel #17
0
        public void TestKrakenImmuneToSpells()
        {
            Card kraken      = new Kraken("kragli", "Glindat", 140, ElementType.Water);
            Card waterSpell  = new WaterSpell("watsta", "Static Shower", 60);
            Card fireSpell   = new FireSpell("firfir", "Fire Storm", 80);
            Card normalSpell = new NormalSpell("norsco", "Scorch", 70);

            bool immuneWater  = ((Kraken)kraken).ImmuneTo(waterSpell);
            bool immuneFire   = ((Kraken)kraken).ImmuneTo(fireSpell);
            bool immuneNormal = ((Kraken)kraken).ImmuneTo(normalSpell);

            Assert.True(immuneWater && immuneFire && immuneNormal);
        }
Beispiel #18
0
        public void createAllSpellcards()
        {
            ICard card1 = new FireSpell(100);
            ICard card2 = new RegularSpell(100);
            ICard card3 = new WaterSpell(100);

            Cardname desiredName1 = Cardname.FireSpell;
            Cardname desiredName2 = Cardname.RegularSpell;
            Cardname desiredName3 = Cardname.WaterSpell;

            Assert.AreEqual(desiredName1, card1.name);
            Assert.AreEqual(desiredName2, card2.name);
            Assert.AreEqual(desiredName3, card3.name);
        }
        public void Test_DeckShouldOnlyGetRandomCardThatIsInDeck()
        {
            //arrange
            CardStack deck      = new Deck();
            Card      dragon    = new Dragon("Great Dragon", 40, ElementType.Normal);
            Card      fireSpell = new FireSpell("Fireball", 60);


            //act
            deck.AddCard(dragon);
            deck.AddCard(fireSpell);
            Card randomCard = ((Deck)deck).GetRandomCard();
            bool isInDeck   = ((Deck)deck).IsInDeck(randomCard);

            //assert
            Assert.IsTrue(isInDeck);
        }
Beispiel #20
0
        public void TestFireVSNormalSpellCards()
        {
            var fire = new FireSpell()
            {
                Damage = 20
            };
            var normal = new NormalSpell()
            {
                Damage = 20
            };

            int fireDamage   = fire.CalculateDamage(normal);
            int normalDamage = normal.CalculateDamage(fire);

            // fire > normal
            Assert.AreEqual(40, fireDamage);
            Assert.AreEqual(10, normalDamage);
        }
Beispiel #21
0
        public void TestFireVSWaterSpellCards()
        {
            var fire = new FireSpell()
            {
                Damage = 20
            };
            var water = new WaterSpell()
            {
                Damage = 20
            };

            int fireDamage  = fire.CalculateDamage(water);
            int waterDamage = water.CalculateDamage(fire);

            // water > fire
            Assert.AreEqual(10, fireDamage);
            Assert.AreEqual(40, waterDamage);
        }
Beispiel #22
0
    void ActivateSpell(SpellModel spell)
    {
        Vector3 forward = transform.TransformDirection(Vector3.forward);

        if (spell.spellName == "fire")
        {
            //	Load spell particle from folder "Resources"
            GameObject flame = (GameObject)Instantiate(Resources.Load(spell.particlePath, typeof(GameObject)), transform.position + forward, Quaternion.identity);
            FireSpell  fs    = flame.GetComponent <FireSpell>();
            fs.forward    = forward;
            fs.spellModel = spell;

            createIcon(spell);
        }
        if (spell.spellName == "teleport")
        {
            transform.position = spellPosition;
            //	Find enemies within reach
            GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("Enemy");
            foreach (GameObject go in gameObjects)
            {
                float distance = Vector3.Distance(go.transform.position, transform.position);
                if (distance <= 4.0f)
                {
                    //	Direction of the movement
                    Vector3 spellDir = (go.transform.position - transform.position).normalized;
                    //	Aplly force to close enemies
                    go.GetComponent <Rigidbody> ().AddForce(spellDir * 300);
                }
            }
        }
        if (spell.spellName == "homing")
        {
            //	Load spell particle from folder "Resources"
            GameObject  homing      = (GameObject)Instantiate(Resources.Load(spell.particlePath, typeof(GameObject)), transform.position + forward, Quaternion.identity);
            HomingSpell homingSpell = homing.GetComponent <HomingSpell>();
            homingSpell.forward       = forward;
            homingSpell.spellPosition = spellPosition;
            homingSpell.spellModel    = spell;

            createIcon(spell);
        }
    }
Beispiel #23
0
        public void TestMixedFightKrakenFireSpell()
        {
            var kraken = new Kraken()
            {
                Damage = 20
            };
            var fire = new FireSpell()
            {
                Damage = 20
            };

            int krakenDamage = kraken.CalculateDamage(fire);
            int fireDamage   = fire.CalculateDamage(kraken);

            // water > fire
            // kraken not affected by spells
            Assert.AreEqual(40, krakenDamage);
            Assert.AreEqual(0, fireDamage);
        }
Beispiel #24
0
 internal void Spell()
 {
     FireSpell newfireSpell = Instantiate(fireSpell, firePoint.position, firePoint.rotation) as FireSpell;
 }
 public void StopBurning()
 {
     burning = false;
     source  = null;
     fireParticle.SetActive(false);
 }
Beispiel #26
0
    [HideInInspector] public MagicSpell currSpell;    //use polymorphism to switch spells

    void Awake()
    {
        stats     = this;
        iceSpell  = new IceSpell();
        fireSpell = new FireSpell();
    }
Beispiel #27
0
        private string Round(ref CardDeck deck1, ref CardDeck deck2, string username1, string username2)
        {
            Card card1Deck = deck1.GetRandomCard();
            Card card2Deck = deck2.GetRandomCard();

            // create new cards instead of references
            Card card1 = card1Deck switch
            {
                Dragon d => new Dragon(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type),
                Elve e => new Elve(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type),
                Goblin g => new Goblin(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type),
                Knight k => new Knight(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type),
                Kraken k => new Kraken(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type),
                Orc o => new Orc(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type),
                Wizard w => new Wizard(card1Deck.ID, card1Deck.Name, card1Deck.Damage, card1Deck.Type),
                FireSpell f => new FireSpell(card1Deck.ID, card1Deck.Name, card1Deck.Damage),
                NormalSpell n => new NormalSpell(card1Deck.ID, card1Deck.Name, card1Deck.Damage),
                WaterSpell w => new WaterSpell(card1Deck.ID, card1Deck.Name, card1Deck.Damage),
            };
            Card card2 = card2Deck switch
            {
                Dragon d => new Dragon(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type),
                Elve e => new Elve(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type),
                Goblin g => new Goblin(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type),
                Knight k => new Knight(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type),
                Kraken k => new Kraken(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type),
                Orc o => new Orc(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type),
                Wizard w => new Wizard(card2Deck.ID, card2Deck.Name, card2Deck.Damage, card2Deck.Type),
                FireSpell f => new FireSpell(card2Deck.ID, card2Deck.Name, card2Deck.Damage),
                NormalSpell n => new NormalSpell(card2Deck.ID, card2Deck.Name, card2Deck.Damage),
                WaterSpell w => new WaterSpell(card2Deck.ID, card2Deck.Name, card2Deck.Damage),
            };

            //card1.Damage = card1.Damage * _elementEffectivenessService.CompareElements(card1.Type, card2.Type);
            //card2.Damage = card2.Damage * _elementEffectivenessService.CompareElements(card2.Type, card1.Type);
            card1.EnhanceDamage(_elementEffectivenessService.CompareElements(card1.Type, card2.Type));
            card2.EnhanceDamage(_elementEffectivenessService.CompareElements(card2.Type, card1.Type));

            // without special abilities

            /*int card1wins = card1 switch
             * {
             *  IMonster monster => monster.CompareDamage(card2.Damage) ? 1 : -1,
             *  ISpell spell => spell.CompareDamage(card2.Damage) ? 1 : -1,
             *  _ => 0
             * };*/

            Random random       = new Random();
            bool   boosterCard1 = (random.Next(1, 21) == 20);

            if (boosterCard1)
            {
                //card1.Damage = card1.Damage * 10;
                card1.EnhanceDamage(10);
            }

            int card1wins = card1 switch
            {
                IMonster _ when card2 is IMonster => FightMonsterMonster(card1, card2),
                IMonster _ when card1 is ISpell => FightMonsterSpell(card1, card2),
                ISpell _ when card2 is IMonster => FightSpellMonster(card2, card1),
                _ => FightSpellSpell(card1, card2)
            };

            string roundLog;

            if (card1wins == 1)
            {
                deck1.AddCard(card2Deck, true);
                deck2.RemoveCard(card2Deck);
                if (boosterCard1)
                {
                    roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") won with a booster against " + card2Deck.ToBattleString() + " (" + username2 + ")");
                }
                else
                {
                    roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") won against " + card2Deck.ToBattleString() + " (" + username2 + ")");
                }
            }
            else if (card1wins == -1)
            {
                deck2.AddCard(card1Deck, true);
                deck1.RemoveCard(card1Deck);
                if (boosterCard1)
                {
                    roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") lost although a booster to " + card2Deck.ToBattleString() + " (" + username2 + ")");
                }
                else
                {
                    roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") lost to " + card2Deck.ToBattleString() + " (" + username2 + ")");
                }
            }
            else
            {
                if (boosterCard1)
                {
                    roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") drew although a booster with " + card2Deck.ToBattleString() + " (" + username2 + ")");
                }
                else
                {
                    roundLog = (card1Deck.ToBattleString() + " (" + username1 + ") drew with " + card2Deck.ToBattleString() + " (" + username2 + ")");
                }
            }

            return(roundLog);
        }