예제 #1
0
        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);
        }
예제 #2
0
        public void TowerCreation()
        {
            Tower = new Tower(500, new Vector3(1, 0, 2), new SimpleTargetStrategy());

            // Tower has correct health
            Assert.AreEqual(500, Tower.Health.Amount);
        }
예제 #3
0
        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);
        }
예제 #4
0
        public void SetTowerAttack()
        {
            Tower = new Tower(500, new Vector3(0, 0, 0), new SimpleTargetStrategy());

            Tower.Attack = new PointTargetAttack(
                Tower, damageType: DamageType.Chaos, damageAmount: 20, damageArea: 10, range: 100,
                cooldownInSeconds: 0.5, projectileSpeed: 60);

            Assert.AreEqual(
                new PointTargetAttack(
                    Tower, damageType: DamageType.Chaos, damageAmount: 20, damageArea: 10, range: 100,
                    cooldownInSeconds: 0.5, projectileSpeed: 60), Tower.Attack);
        }