protected virtual void OnOutOfBounds(GameEventArgs e)
 {
     EventHandler<GameEventArgs> handler = OutOfBounds;
     if (handler != null) handler(this, e);
 }
 protected virtual void OnSpawn(GameEventArgs e)
 {
     EventHandler<GameEventArgs> handler = Spawn;
     if (handler != null) handler(this, e);
 }
 protected virtual void OnDying(GameEventArgs e)
 {
     IsDying = true;
     EventHandler<GameEventArgs> handler = Dying;
     if (handler != null) handler(this, e);
 }
 protected virtual void OnMove(GameEventArgs e)
 {
     EventHandler<GameEventArgs> handler = Move;
     if (handler != null) handler(this, e);
 }
 public void End(object sender, GameEventArgs args)
 {
     UnloadContent();
     OnEnding(new GameEventArgs(GameCore.Time));
 }
 protected virtual void OnDead(GameEventArgs e)
 {
     IsDying = false;
     EventHandler<GameEventArgs> handler = Dead;
     if (handler != null) handler(this, e);
 }
 private void MissedEnemy(object sender, GameEventArgs args)
 {
     Missed++;
 }
 protected virtual void OnStarting(GameEventArgs e)
 {
     EventHandler<GameEventArgs> handler = Starting;
     if (handler != null) handler(this, e);
 }
 private void OnEnd(GameEventArgs e)
 {
     EventHandler<GameEventArgs> handler = End;
     if (handler != null) handler(this, e);
 }
 private void Respawn(object sender, GameEventArgs gameEventArgs)
 {
     do
     {
         speed.Y = (float)rng.NextDouble() * -3 - 1;
         position.Y = rng.Next(-Height * 2, -Height);
         position.X = rng.Next(0, GameCore.GameView.Width - Width);
     } while (!GameCore.enemies.Any(IsColliding));
     Health = DefaultLives;
     OnSpawn(new GameEventArgs(GameCore.Time));
 }
 private void Remove(object sender, GameEventArgs args)
 {
     Bullets.Remove(sender as Projectile);
 }