public void LaunchMissileTowardTarget() { var game = new Game(); var system = new StarSystem(); game.Add(system); var enemy = new Ship(); system.AddEntity(enemy); var attacker = new Ship() { Tubes = 3 }; system.AddEntity(attacker); game.Update(TimeSpan.FromSeconds(0.25)); attacker.LoadProjectile(0, ProjectileType.Torpedo); enemy.ImpulsePercentage = 100; game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); game.Update(TimeSpan.FromSeconds(0.25)); Assert.AreNotEqual(0, enemy.Position.X, "The enemy should have moved along the x axis"); Assert.AreEqual(0, attacker.Position.X, "the attacker was not at the center"); var missile = attacker.LaunchProjectile(0, enemy); Assert.AreEqual(0, missile.Position.X, "the missile was not at the center"); var oldDiff = enemy.Position.X - missile.Position.X; missile.Update(TimeSpan.FromSeconds(0.25)); var newDiff = enemy.Position.X - missile.Position.X; Assert.IsTrue(newDiff < oldDiff, "The missile didn't get closer to the ship"); }
public void LoadProjectileLaunchWithoutWaitingAfterLoading() { var game = new Game(); var system = new StarSystem(); system.RandomlySpawnEnemies = false; game.Add(system); var ship = new Ship() { Tubes = 3 }; system.AddEntity(ship); game.Update(TimeSpan.FromSeconds(0.25)); ship.LoadProjectile(0, ProjectileType.Torpedo); var projectile = ship.LaunchProjectile(0, ship); Assert.IsNull(projectile, "The projectile shouldn't have been launched if there hasn't been enough time to load it."); }
public void LoadProjectileDoubleLoad() { var game = new Game(); var system = new StarSystem(); system.RandomlySpawnEnemies = false; game.Add(system); var ship = new Ship() { Tubes = 3 }; system.AddEntity(ship); game.Update(TimeSpan.FromSeconds(0.25)); var loaded = ship.LoadProjectile(0, ProjectileType.Torpedo); Assert.IsTrue(loaded, "Couldn't load the first projectile"); loaded = ship.LoadProjectile(0, ProjectileType.Torpedo); Assert.IsFalse(loaded, "Somehow Loaded a second projectile."); }