public void TowerUnitAdditionAndRemoval() { Tower = new Tower(500, new Vector3(0, 0, 0), new SimpleTargetStrategy()); Tower.Attack = new UnitSeekingAttack( Tower, damageType: DamageType.Chaos, damageAmount: 20, damageArea: 10, range: 100, cooldownInSeconds: 0.5, projectileSpeed: 60); Tower.TargetStrategy = new SimpleTargetStrategy(); Unit unit = new Unit(100, ArmorType.Heavy, 100, 100, new Vector3(0, 0, 0)); Tower.AddUnitInRange(unit); Tower.Update(0.5); Projectile projectile = Tower.Attack.GenerateProjectile(new Vector3(0, 0, 0)); Assert.IsNotNull(projectile); Assert.AreEqual<Unit>(unit, Tower.Attack.Target); Tower.RemoveUnitFromRange(unit); Tower.Update(0.5); Projectile projectile2 = Tower.Attack.GenerateProjectile(new Vector3(0, 0, 0)); Assert.IsNull(projectile2); Assert.IsNull(Tower.Attack.Target); }
public void TowerUpdate() { Tower = new Tower(500, new Vector3(0, 0, 0), new SimpleTargetStrategy()); Tower.Attack = new UnitSeekingAttack( Tower, damageType: DamageType.Chaos, damageAmount: 20, damageArea: 10, range: 100, cooldownInSeconds: 0.5, projectileSpeed: 60); Unit unit = new Unit(100, ArmorType.Heavy, 100, 100, new Vector3(0, 0, 0)); Tower.UnitsInRange.Add(unit); Tower.Attack.Target = unit; Assert.IsTrue(Tower.Attack.IsCooledDown); Tower.Attack.GenerateProjectile(Vector3.zero); Assert.IsFalse(Tower.Attack.IsCooledDown); Tower.Update(0.5); Assert.IsTrue(Tower.Attack.IsCooledDown); // Update doesn't do anything, if targetStrategy is null Tower.Attack.GenerateProjectile(Vector3.zero); Assert.IsFalse(Tower.Attack.IsCooledDown); Tower.TargetStrategy = null; Tower.Update(0.5); Assert.IsFalse(Tower.Attack.IsCooledDown); }