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); } }
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); }
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)); }
public void DoBulletDeflected(Bullet b) { XACTAudio.PlayCue("VulcanoidDeflection", "Sound Bank"); }
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); }