public BulletsDeflected()
 {
     Output = new List<KeyValuePair<Enemy, Bullet>>();
     Handler = new IntegerHandler(CheckBulletIsDeflected);
     CurrentBullet = null;
     CurrentBulletRectangle = new PhysicalRectangle();
     CurrentBulletDeflectRange = new Circle(Vector3.Zero, 0);
 }
        public void Sync()
        {
            Output.Clear();

            for (int i = 0; i < Bullets.Count; i++)
            {
                CurrentBullet = Bullets[i];

                if (!CurrentBullet.Deflectable)
                    continue;

                SyncRectangleAndCircle();

                EnemiesGrid.GetItems(CurrentBulletRectangle, Handler);
            }
        }
Example #3
0
 public void Return(Bullet bullet)
 {
     switch (bullet.Type)
     {
         case BulletType.Base: ((Pool<BasicBullet>) BulletsPools[bullet.Type]).Return((BasicBullet) bullet); break;
         case BulletType.Gunner: ((Pool<GunnerBullet>) BulletsPools[bullet.Type]).Return((GunnerBullet) bullet); break;
         case BulletType.LaserMultiple: ((Pool<MultipleLasersBullet>) BulletsPools[bullet.Type]).Return((MultipleLasersBullet) bullet); break;
         case BulletType.LaserSimple: ((Pool<LaserBullet>) BulletsPools[bullet.Type]).Return((LaserBullet) bullet); break;
         case BulletType.Missile: ((Pool<MissileBullet>) BulletsPools[bullet.Type]).Return((MissileBullet) bullet); break;
         case BulletType.Nanobots: ((Pool<NanobotsBullet>) BulletsPools[bullet.Type]).Return((NanobotsBullet) bullet); break;
         case BulletType.RailGun: ((Pool<RailGunBullet>) BulletsPools[bullet.Type]).Return((RailGunBullet) bullet); break;
         case BulletType.SlowMotion: ((Pool<SlowMotionBullet>) BulletsPools[bullet.Type]).Return((SlowMotionBullet) bullet); break;
         case BulletType.Shield: ((Pool<ShieldBullet>) BulletsPools[bullet.Type]).Return((ShieldBullet) bullet); break;
         case BulletType.Pulse: ((Pool<PulseBullet>) BulletsPools[bullet.Type]).Return((PulseBullet) bullet); break;
         case BulletType.Mine: ((Pool<MineBullet>) BulletsPools[bullet.Type]).Return((MineBullet) bullet); break;
     }
 }
        private void SyncBulletsEnemies()
        {
            TmpObjects.Clear();

            for (int i = Bullets.Count - 1; i > -1; i--)
            {
                CurrentBullet = Bullets[i];

                if (CurrentBullet.Type == BulletType.LaserMultiple || CurrentBullet.Type == BulletType.LaserSimple)
                    EnemiesGrid.GetItems(CurrentBullet.Line, HandlerBulletEnemy);
                else
                    EnemiesGrid.GetItems(CurrentBullet.Rectangle, HandlerBulletEnemy);
            }
        }
 public void DoShieldCollided(ICollidable i, Bullet b)
 {
     b.DoHit(null);
 }
 public void DoStartingPathCollision(Bullet b, CelestialBody cb)
 {
     b.DoHit(cb);
 }
 private void NotifyBulletDeflected(Bullet b)
 {
     if (BulletDeflected != null)
         BulletDeflected(b);
 }
        public void DoBulletDeflected(Enemy enemy, Bullet bullet)
        {
            Vector3 direction = enemy.Position - bullet.Position;

            float rotation = Math.Max(0.8f, 0.08f * bullet.Speed) * (1 - direction.Length() / bullet.DeflectZone);

            rotation = Main.Random.Next(0, 2) == 0 ? rotation : -rotation;

            Matrix.CreateRotationZ(rotation, out RotationMatrix);

            bullet.Direction = Vector3.Transform(bullet.Direction, RotationMatrix);
            bullet.Direction.Normalize();

            bullet.Image.Rotation = MathHelper.PiOver2 + (float) Math.Atan2(bullet.Direction.Y, bullet.Direction.X);

            if (bullet is MissileBullet)
                ((MissileBullet) bullet).Wander = true;

            if (!bullet.Deflected)
            {
                bullet.Deflected = true;
                NotifyBulletDeflected(bullet);
            }
        }
 private void NotifyObjectDestroyed(Bullet bullet)
 {
     if (ObjectDestroyed != null)
         ObjectDestroyed(bullet);
 }
Example #10
0
        public void DoStartingPathCollision(Bullet b, CelestialBody cb)
        {
            Vector3 direction = b.Position - cb.Position;
            float lengthSquared = direction.LengthSquared();
            float cbLengthSquared = ((int) cb.Size + 15) * ((int) cb.Size + 15);
            direction.Normalize();
            float rotation = Core.Physics.Utilities.VectorToAngle(direction);
            Vector3 position = b.Position - direction * 30;

            if (lengthSquared >= cbLengthSquared)
                Simulator.Scene.Add(new CelestialBodyShieldHitAnimation(cb.Size, position, rotation, Colors.Default.AlienBright, VisualPriorities.Default.CelestialBodyShield));
        }
Example #11
0
 public void DoBulletDeflected(Bullet b)
 {
     XACTAudio.PlayCue("VulcanoidDeflection", "Sound Bank");
 }
Example #12
0
 public void DoStartingPathCollision(Bullet b, CelestialBody cb)
 {
     XACTAudio.PlayCue("MothershipShieldHit", "Sound Bank");
 }
        public void DoShieldCollided(ICollidable collidable, Bullet b)
        {
            var spaceship = collidable as Spaceship;

            if (spaceship == null)
                return;

            spaceship.DoShieldHit(b.Position);
        }
 private void NotifyShieldCollided(ICollidable i, Bullet b)
 {
     if (ShieldCollided != null)
         ShieldCollided(i, b);
 }
 private void NotifyStartingPathCollision(CelestialBody cb, Bullet b)
 {
     if (StartingPathCollision != null)
         StartingPathCollision(b, cb);
 }
 private void NotifyBulletDeflected(Enemy enemy, Bullet bullet)
 {
     if (BulletDeflected != null)
         BulletDeflected(enemy, bullet);
 }