Beispiel #1
0
        public void Can_Deal_Damage_To_Target()
        {
            //arrange
            var enemy = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, 0), HitPoints = 100 };
            var bullet = new SimpleBullet(new PointF(0, 0), new PointF(0, 0)) { Damage = 50 };

            //act
            bullet.Move(new List<BaseEnemy>() { enemy });

            //assert
            Assert.AreEqual(50, enemy.HitPoints, "Bullet failed to damage the target for exact damage amount.");
        }
Beispiel #2
0
        public void Can_Shoot_Target()
        {
            //arrange
            var enemy = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, 0), HitPoints = 50 };
            var bullet = new SimpleBullet(new PointF(0, 0), new PointF(0, 0)) { Damage = 50 };

            //act
            bullet.Move(new List<BaseEnemy>() { enemy });

            //assert
            Assert.IsTrue(enemy.Shooted, "Bullet failed to shoot the target.");
        }
Beispiel #3
0
        public void Can_Not_Find_Target_If_Out_Of_Range()
        {
            //arrange
            var range = 100;
            var tower = new SimpleTower() { Center = new PointF(0, 0), Range = range, Active = true };
            var enemy = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, range + 1) };

            //act
            var target = tower.FindTarget(new List<BaseEnemy>() { enemy });

            //assert
            Assert.IsNull(target, "Tower found a target that is out of its range.");
        }
Beispiel #4
0
        public void Can_Find_Target_In_Range()
        {
            //arrange
            var range = 100;
            var tower = new SimpleTower() { Center = new PointF(0, 0), Range = range, Active = true };
            var enemy = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, range) };

            //act
            var target = tower.FindTarget(new List<BaseEnemy>() { enemy });

            //assert
            Assert.IsNotNull(target, "Tower failed to find target that is within range.");
        }
Beispiel #5
0
        public void Heavy_Bullet_Deals_Damage_To_Multiple_Targets_In_Blast_Area()
        {
            //arrange
            var enemy1 = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, 10), HitPoints = 100 };
            var enemy2 = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, 20), HitPoints = 100 };
            var enemy3 = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, 30), HitPoints = 100 };
            var bullet = new HeavyBullet(new PointF(0, 0), new PointF(0, 0)) { Damage = 50, Width = 50, Height = 50 };

            //act
            bullet.Move(new List<BaseEnemy>() { enemy1, enemy2, enemy3 });

            //assert
            Assert.AreEqual(150, enemy1.HitPoints + enemy1.HitPoints + enemy1.HitPoints, "Heavy bullet failed to damage all targets in area.");
        }
Beispiel #6
0
        public void Telsa_Tower_Can_Fire_On_Multiple_Targets_In_Range_At_Once()
        {
            //arrange
            var range = 100;
            var tower = new TeslaTower() { FireDelayMilis = 1000, Range = 100, Placed = true, Active = true };
            var ground = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, range) };
            var flying = new FlyingEnemy(1.3F, 100, 100, null) { Center = new PointF(0, range) };

            //act
            var bullets = tower.TryFire(new List<BaseEnemy>() { ground, flying });

            //assert
            Assert.AreEqual(2, bullets.Count, "Telsa tower failed to fire on two valid targets in range at once.");
        }
Beispiel #7
0
        public void Can_Only_Fire_On_Valid_TargetType()
        {
            //arrange
            var range = 100;
            var tower = new SimpleTower() { FireDelayMilis = 1000, Range = 100, TargetType = TargetTypes.Ground, Active = true };
            var ground = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, range) };
            var flying = new FlyingEnemy(1.3F, 100, 100, null) { Center = new PointF(100, range) };

            //act
            var targets = tower.FindTargets(new List<BaseEnemy>() { ground, flying });

            //assert
            Assert.AreEqual(ground, targets.First(), "Tower found flying target but can only fire on ground targets.");
        }
Beispiel #8
0
        public void Can_Not_Fire_Faster_Than_FileDelay()
        {
            //arrange
            var range = 100;
            var tower = new SimpleTower() { FireDelayMilis = 1000, Placed = true, Active = true };
            var enemy = new GroundEnemy(1.3F, 100, 100, null) { Center = new PointF(0, range + 1) };

            //act
            var bullet1 = tower.Fire(enemy);
            var canFire = tower.CanFire();

            //assert
            Assert.IsFalse(canFire, "Tower fires faster that its fire rate.");
        }
Beispiel #9
0
        public void New_Enemy_Added_To_Map_Gets_Positioned_On_Road_Start()
        {
            //arrange
            var start = new PointF(10, 20);
            Map map = new Map() { Start = start };
            map.AddRoad(100, Directions.Right);
            BaseEnemy enemy = new GroundEnemy(1.3F, 1, 1, null);

            //act
            map.PositionEnemyForStart(enemy);

            //assert
            Assert.AreEqual(new PointF(10.1f, 20), enemy.Center, "Failed to position new ground enemy to map road start.");
        }
 public void GivenThereIsTargetTwoInBulletsPathToTargetOne()
 {
     enemy2 = new GroundEnemy(1.3F, 1, 1, null) { Center = new PointF(0, range / 2), Height = 10, Width = 10 };
 }
Beispiel #11
0
        public BaseEnemy SpawnOne(Map map)
        {
            LastTimeSpawn = DateTime.Now;
            Count--;

            BaseEnemy enemy = null;
            if (Ground)
                enemy = new GroundEnemy(Speed, HitPoints, 100, map) { Height = Height, Width = Width, Money = Money, Points = Points };
            else
                enemy = new FlyingEnemy(Speed, HitPoints, 100, map) { Height = Height, Width = Width, Money = Money, Points = Points };

            enemy.PositionEnemyForStart(map);

            return enemy;
        }
Beispiel #12
0
        private void SpawnEnemiesStart(int hitPoints, int height, int width, bool ground, int count, int milis)
        {
            while (count > 0)
            {
                count--;
                if (ground)
                {
                    BaseEnemy enemy = new GroundEnemy(1.3F, hitPoints, 100, this.Map) { Height = height, Width = width };
                    while (Updating)
                    {
                    }
                    this.Enemies.Add(enemy);
                }
                else
                {
                    BaseEnemy enemy = new FlyingEnemy(1.3F, hitPoints, 100, this.Map) { Height = height, Width = width };
                    while (Updating)
                    {
                    }
                    this.Enemies.Add(enemy);
                }

                Thread.Sleep(milis);
            }
        }