Пример #1
0
		public void WithFightingDragonTowerHasExtendedRange()
		{
			var tower = new Tower(TowerType.Fire, Vector3D.Zero);
			var towerProperties = ContentLoader.Load<TowerPropertiesXml>(Xml.TowerProperties.ToString());
			var defaultRange = towerProperties.Get(TowerType.Fire).Range;
			Assert.AreEqual(defaultRange * 1.25f, tower.GetStatValue("Range"));
		}
Пример #2
0
		private static void DoRadiusAttack(Tower tower, List<Creep> creepsWithinRange)
		{
			var type = tower.Type;
			var power = tower.GetStatValue("Power");
			foreach (var creep in creepsWithinRange)
				creep.ReceiveAttack(type, power, RadiusAttackModifier);
		}
Пример #3
0
		public void WithFlyingPenguinTowerHasFasterAttacks()
		{
			var tower = new Tower(TowerType.Fire, Vector3D.Zero);
			var towerProperties = ContentLoader.Load<TowerPropertiesXml>(Xml.TowerProperties.ToString());
			var defaultAttackFrequency = towerProperties.Get(TowerType.Fire).AttackFrequency;
			Assert.AreEqual(defaultAttackFrequency * 1.3333f, tower.GetStatValue("AttackFrequency"));
		}
Пример #4
0
		public void WithoutFlyingPenguinTowerHasDefaultAttackFrequency()
		{
			player.UnlockAvatar(CreepyTowers.Content.Avatars.Dragon);
			player.ChangeAvatar(CreepyTowers.Content.Avatars.Dragon);
			var tower = new Tower(TowerType.Fire, Vector3D.Zero);
			var towerProperties = ContentLoader.Load<TowerPropertiesXml>(Xml.TowerProperties.ToString());
			var defaultAttackFrequency = towerProperties.Get(TowerType.Fire).AttackFrequency;
			Assert.AreEqual(defaultAttackFrequency, tower.GetStatValue("AttackFrequency"));
		}
Пример #5
0
		public void WithoutFightingDragonTowerHasDefaultRange()
		{
			player.UnlockAvatar(CreepyTowers.Content.Avatars.PiggyBank);
			player.ChangeAvatar(CreepyTowers.Content.Avatars.PiggyBank);
			var tower = new Tower(TowerType.Fire, Vector3D.Zero);
			var towerProperties = ContentLoader.Load<TowerPropertiesXml>(Xml.TowerProperties.ToString());
			var defaultRange = towerProperties.Get(TowerType.Fire).Range;
			Assert.AreEqual(defaultRange, tower.GetStatValue("Range"));
		}
Пример #6
0
        private static void DoRadiusAttack(Tower tower, List <Creep> creepsWithinRange)
        {
            var type  = tower.Type;
            var power = tower.GetStatValue("Power");

            foreach (var creep in creepsWithinRange)
            {
                creep.ReceiveAttack(type, power, RadiusAttackModifier);
            }
        }
Пример #7
0
		private static List<Creep> FindAllCreepsWithinRangeOfTower(Tower tower, List<Creep> creeps)
		{
			float range = tower.GetStatValue("Range");
			float rangeSquared = range * range;
			var targets = new List<Creep>();
			foreach (Creep creep in creeps)
			{
				var distance = (creep.Position - tower.Position).LengthSquared;
				if (distance <= rangeSquared)
					targets.Add(creep);
			}
			return targets;
		}
Пример #8
0
		private static void DoConeAttack(Tower tower, Creep target, List<Creep> creepsWithinRange)
		{
			Vector2D towerPosition = tower.Position.GetVector2D();
			Vector2D creepPosition = target.Position.GetVector2D();
			Vector2D aim = Vector2D.Normalize(creepPosition - towerPosition);
			float edgeDotProduct = GetEdgeDotProduct(creepPosition, towerPosition, aim);
			var power = tower.GetStatValue("Power");
			foreach (Creep creep in creepsWithinRange)
			{
				var position = creep.Position.GetVector2D();
				if (aim.DotProduct(Vector2D.Normalize(position - towerPosition)) >= edgeDotProduct)
					creep.ReceiveAttack(tower.Type, power, ConeAttackModifier);
			}
		}
Пример #9
0
        private static List <Creep> FindAllCreepsWithinRangeOfTower(Tower tower, List <Creep> creeps)
        {
            float range        = tower.GetStatValue("Range");
            float rangeSquared = range * range;
            var   targets      = new List <Creep>();

            foreach (Creep creep in creeps)
            {
                var distance = (creep.Position - tower.Position).LengthSquared;
                if (distance <= rangeSquared)
                {
                    targets.Add(creep);
                }
            }
            return(targets);
        }
Пример #10
0
        private static void DoConeAttack(Tower tower, Creep target, List <Creep> creepsWithinRange)
        {
            Vector2D towerPosition  = tower.Position.GetVector2D();
            Vector2D creepPosition  = target.Position.GetVector2D();
            Vector2D aim            = Vector2D.Normalize(creepPosition - towerPosition);
            float    edgeDotProduct = GetEdgeDotProduct(creepPosition, towerPosition, aim);
            var      power          = tower.GetStatValue("Power");

            foreach (Creep creep in creepsWithinRange)
            {
                var position = creep.Position.GetVector2D();
                if (aim.DotProduct(Vector2D.Normalize(position - towerPosition)) >= edgeDotProduct)
                {
                    creep.ReceiveAttack(tower.Type, power, ConeAttackModifier);
                }
            }
        }
Пример #11
0
		private void AdvanceToJustBeforeTowerAttack(Tower tower)
		{
			var towerCooldown = 1 / tower.GetStatValue("AttackFrequency");
			AdvanceTimeAndUpdateEntities(towerCooldown - 0.1f);
		}
Пример #12
0
		private void AdvanceTimeTillTowerAttacks(Tower tower)
		{
			var towerCooldown = 1 / tower.GetStatValue("AttackFrequency");
			AdvanceTimeAndUpdateEntities(towerCooldown + 0.1f);
		}