/** Occurs when all fields have been initialised. */
  public void onStart() {
    this.fFade.hide();
    this.loadTextures();
    this.registerUpdateHandler(this.eysEntityYSorter);
    this.onStartRound();

    this.showSurviveNotification();
    this.playSirenSound();

    SessionScene.AMBIENCE.play();
    EnvironmentVars.MAIN_CONTEXT.registerSound(SessionScene.AMBIENCE);

    this.registerFloatValueModifier(
        true,
        new OnValueChangeListener() {
          @Override
          public void valueChanged(float value) {
            EnvironmentVars.MAIN_CONTEXT.getSoundManager().setMasterVolume(value);
          }
        },
        new Runnable() {
          @Override
          public void run() {
            SessionScene.AMBIENCE.setVolume(SessionScene.AMBIENCE_VOLUME);
          }
        });
  }
  protected void showFirstWave() {
    if (this.rsRoundSystem.getStartRound() != 1) return;

    // @formatter:off
    this.sFirstWave =
        new Sprite(
            (EnvironmentVars.MAIN_CONTEXT.width() - HudRegions.region_wave_1[0].getWidth()) / 2f,
            (EnvironmentVars.MAIN_CONTEXT.height() - HudRegions.region_wave_1[0].getHeight()) / 2f,
            HudRegions.region_wave_1[0],
            EnvironmentVars.MAIN_CONTEXT.getVertexBufferObjectManager());
    this.sFirstWave.setScale(4f);

    this.sFirstWaveSub =
        new Sprite(
            (EnvironmentVars.MAIN_CONTEXT.width() - HudRegions.region_wave_1[1].getWidth()) / 2f,
            this.sFirstWave.getY() + this.sFirstWave.getHeightScaled() + 4f,
            HudRegions.region_wave_1[1],
            EnvironmentVars.MAIN_CONTEXT.getVertexBufferObjectManager()) {
          @Override
          public void dispose() {
            ResourceManager.btWave1.unload();
            super.dispose();
          }
        };
    this.sFirstWaveSub.setScale(1.5f);
    // @formatter:on

    final Music FIRST_WAVE_MUSIC = ResourceManager.mFirstWave;
    EnvironmentVars.MAIN_CONTEXT.registerSound(FIRST_WAVE_MUSIC);
    FIRST_WAVE_MUSIC.seekTo(0);
    FIRST_WAVE_MUSIC.play();

    SessionScene.HUD.attachChild(SessionScene.this.sFirstWave);
    SessionScene.HUD.attachChild(SessionScene.this.sFirstWaveSub);

    ResourceManager.btWave1.load();

    final DelayModifier DELAY_LIFETIME =
        new DelayModifier(3f) {
          @Override
          protected void onModifierFinished(IEntity pItem) {
            super.onModifierFinished(pItem);

            SessionScene.this.rsRoundSystem.start();
            final FlashUpdateHandler FLASH = new FlashUpdateHandler(0.05f, 2);

            FLASH.runOnSwitch(
                new Runnable() {
                  @Override
                  public void run() {
                    final boolean VISIBLE = SessionScene.this.sFirstWave.isVisible();
                    SessionScene.this.sFirstWave.setVisible(!VISIBLE);
                  }
                });

            FLASH.runOnFinish(
                new Runnable() {
                  @Override
                  public void run() {
                    SessionScene.this.unregisterUpdateHandler(FLASH);
                    SessionScene.this.sFirstWave.setVisible(true);

                    EntityUtils.animateEntity(
                        SessionScene.this.sFirstWave,
                        0.25f,
                        EntityUtils.ANIMATION_JUMP_OUT_MEDIUM_INTESTIVITY,
                        EaseLinear.getInstance(),
                        EntityUtils.getDetachDisposeListener());

                    EntityUtils.animateEntity(
                        SessionScene.this.sFirstWaveSub,
                        1f,
                        EntityUtils.ANIMATION_FADE_OUT,
                        EaseCubicInOut.getInstance(),
                        EntityUtils.getDetachDisposeListener());
                  }
                });
            SessionScene.this.registerUpdateHandler(FLASH);
          }
        };
    DELAY_LIFETIME.setAutoUnregisterWhenFinished(true);
    this.registerEntityModifier(DELAY_LIFETIME);

    EntityUtils.animateEntity(this.sFirstWave, 1f, EntityUtils.ANIMATION_FADE_IN);
    EntityUtils.animateEntity(this.sFirstWaveSub, 1f, EntityUtils.ANIMATION_FADE_IN);
  }
 protected void playSirenSound() {
   ResourceManager.sSiren.setVolume(1);
   ResourceManager.sSiren.play();
   EnvironmentVars.MAIN_CONTEXT.registerSound(ResourceManager.sSiren);
 }