Esempio n. 1
0
        public override void FireInternal()
        {
            var targetAngle    = CalculateAngleToTarget();
            var sprayAngle     = SpaceExtensions.NormalizeQuantity(30.0f, targetAngle, true);
            var sprayIncrement = 5;
            var startAngle     = SpaceExtensions.AddToAngle(targetAngle, -sprayAngle / 2);
            var sprayedSoFar   = 0;

            Sound.Play("pistol");

            while (sprayedSoFar < sprayAngle)
            {
                sprayedSoFar += sprayIncrement;
                var angle  = SpaceExtensions.AddToAngle(startAngle, sprayedSoFar);
                var bullet = new Projectile(Holder.Left, Holder.Top, angle)
                {
                    Range = SpaceExtensions.NormalizeQuantity(8, angle), HealthPoints = HealthPoints, PlaySoundOnImpact = true
                };
                bullet.Speed.HitDetectionTypes.Remove(Holder.GetType());

                if (Holder.Target != null)
                {
                    bullet.Speed.HitDetectionTypes.Add(Holder.Target.GetType());
                }
                SpaceTime.CurrentSpaceTime.Add(bullet);
            }
        }
Esempio n. 2
0
 public void TestAngleMath()
 {
     Assert.AreEqual(45, SpaceExtensions.AddToAngle(0, 45));
     Assert.AreEqual(1, SpaceExtensions.AddToAngle(360, 1));
     Assert.AreEqual(359, SpaceExtensions.AddToAngle(0, -1));
     Assert.AreEqual(359, SpaceExtensions.AddToAngle(360, -1));
 }