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