public void testTwoTowerswithTwoEnemies() { Tower t1 = new Tower("tower", 10, 1, 10, 20, new Rectangle(10, 10, 1, 1)); Tower t2 = new Tower("tower", 10, 10, 10, 20, new Rectangle(20, 20, 1, 1)); Enemy e1 = new Enemy(20, 1.0, "basic", 1, new Rectangle(11, 11, 1, 1)); // In range of tower and tower 2, closer to tower 1 Enemy e2 = new Enemy(20, 1.0, "basic", 1, new Rectangle(19, 19, 1, 1)); // In range of tower and tower 2, closer to tower 2 Map m = new Map("normal", 100, 1); m.PlaceTower(t1); m.PlaceTower(t2); m.SpawnEnemy(e1); m.SpawnEnemy(e2); m.Update();//adds all the approiate enemies to the towers lists //Assert.IsNull(t1.getCurrentTarget()); t1.updateCounter = 59; t2.updateCounter = 59; t1.Update(); Assert.AreEqual(2, t1.Enemies.Count); Assert.AreEqual(2, t2.Enemies.Count); Assert.AreEqual(1, t1.AttackDamage); // e1.Health -= 19; t2.Update(); //Assert.AreEqual(19, e1.Health); Assert.AreEqual(e2.Health, 10); }
public void testTowerUpdatesEnemiesList() { Tower t1 = new Tower("tower", 10, 1, 10, 10, new Rectangle(0, 0, 10, 10)); Enemy e1 = new Enemy(20, 1.0, "basic", 1, new Rectangle(150, 150, 155, 155)); //Out of t1's range Map m = new Map("normal", 100, 1); m.PlaceTower(t1); m.SpawnEnemy(e1); m.Update();//adds all the approiate enemies to the towers lists t1.Update(); //Assert.AreEqual(e1, t1.getEnemyList.get(0)); Assert.AreEqual(0, t1.Enemies.Count); }
public void Update(DemoTime time, Vector2 position) { base.Update(time); _towers.ForEach(delegate(CommonTower Tower) { Tower.Update(time); }); _towers.ForEach(delegate(CommonTower Tower) { Tower.Fire(time, position); }); }
/// <summary> /// This is where all the Tower defense update calls should be placed so that it is easy to transfer our /// project over to the main one without having to add a lot of code to the main program. /// </summary> /// <param name="gametime">current game time</param> /// <param name="keyboard">keyboard state</param> /// <param name="mouse">mouse state</param> public static void Update(GameTime gametime, KeyboardState keyboard, MouseState mouse) { Random random = new Random(); if (LastWaveUpdate == TimeSpan.Zero) { LastWaveUpdate = gametime.TotalGameTime; } if (currentWave != null && !currentWave.complete) { currentWave.update(gametime); LastWaveUpdate = gametime.TotalGameTime; } else if ((gametime.TotalGameTime - LastWaveUpdate) > SpawnNextWaveIn) { if (TDPlayerStats.currentWave == TDPlayerStats.maxWaves) { TPEngine.Get().State.PopState(); TPEngine.Get().State.PushState(new TDScoreScreenState()); } TDPlayerStats.Money += 5; TDPlayerStats.currentWave++; currentWave = new EnemyWave(random.Next(8, 12), 1); //LastWaveUpdate = gametime.TotalGameTime; } if (TDPlayerStats.Grade <= 0) { TPEngine.Get().State.PopState(); TPEngine.Get().State.PushState(new TDScoreScreenState()); } if (Keyboard.GetState().IsKeyDown(Keys.X) && !clicked) { TDPlayerStats.Grade = 0; TPEngine.Get().State.PopState(); TPEngine.Get().State.PushState(new TDScoreScreenState()); clicked = true; } TowerBuilder.UpdateKeyboardInput(keyboard, mouse); Enemy.Update(gametime); Tower.Update(gametime); Projectile.UpdateProjectiles(gametime); Window.Update(gametime, keyboard, mouse); }
//Testing to see if enemies that move into range get damaged public void mapUpdatesDamageEnemiesWithTowers() { Tower t = new Tower("basic", 10, 10, 10, 500, new Rectangle(70, 70, 1, 1)); Enemy special = new Enemy(20, 1.0f, "basic", 20, new Rectangle(1, 1, 1, 1)); map.SpawnEnemy(special); map.SellTower(t); map.PlaceTower(t); for (int i = 0; i <= 60; i++) { map.Update(); t.Update(); } Assert.AreEqual(special, t.getCurrentTarget());//Special should be the closest to the tower Assert.AreEqual(10, t.getCurrentTarget().Health); }
public void TowerDoesNotAttackEnemyOutsideItsRange() { //Move the enemy outside of the tower's range enemy.moveTo(1000, 1000); //Update method for map causes the towers to add nearby enemies map.Update(); Assert.AreEqual(0, tower.Enemies.Count); //Update method causes the tower to attack nearest enemy in its range for (int i = 0; i < tower.UpdateMax; i++) { tower.Update(); } //Verify that the enemy was not damaged Assert.AreEqual(10, enemy.Health); }
public void testTowerChangesTarget() { Tower t1 = new Tower("tower", 10, 1, 10, 100, new Rectangle(0, 0, 1, 11)); Enemy e1 = new Enemy(20, 1.0, "basic", 1, new Rectangle(30, 30, 1, 1)); Enemy e2 = new Enemy(20, 1.0, "basic", 1, new Rectangle(110, 110, 1, 1)); Map m = new Map("normal", 100, 1); m.PlaceTower(t1); m.SpawnEnemy(e1); m.SpawnEnemy(e2); m.Update(); //adds all the approiate enemies to the towers lists t1.Update(); Assert.AreEqual(e1, t1.getCurrentTarget()); e2.moveTo(25, 25); m.Update(); Assert.AreEqual(e2, t1.getCurrentTarget()); }
public void MultipleTowersCanAttackSingleEnemy() { //Testing that two towers can attack the same enemy Tower tower2 = new Tower("", 10, 20, 30, 40, new Rectangle(4, 4, 1, 1)); map.PlaceTower(tower2); map.Update(); float temp = enemy.Health; for (int i = 0; i < tower.UpdateMax; i++) { tower.Update(); } Assert.AreNotEqual(enemy.Health, temp); temp = enemy.Health; for (int i = 0; i < tower2.UpdateMax; i++) { tower2.Update(); } Assert.AreNotEqual(enemy.Health, temp); }