Exemple #1
0
  @Override
  public boolean closeRequested() {
    int id = this.getCurrentStateID();

    // intercept close requests in game-related states and return to song menu
    if (id == STATE_GAME || id == STATE_GAMEPAUSEMENU || id == STATE_GAMERANKING) {
      // start playing track at preview position
      SongMenu songMenu = (SongMenu) this.getState(Opsu.STATE_SONGMENU);
      if (id == STATE_GAMERANKING) {
        GameData data = ((GameRanking) this.getState(Opsu.STATE_GAMERANKING)).getGameData();
        if (data != null && data.isGameplay()) {
          songMenu.resetGameDataOnLoad();
          songMenu.resetTrackOnLoad();
        }
      } else {
        songMenu.resetGameDataOnLoad();
        if (id == STATE_GAME) {
          MusicController.pause();
          MusicController.resume();
        } else songMenu.resetTrackOnLoad();
      }
      if (UI.getCursor().isSkinned()) UI.getCursor().reset();
      this.enterState(
          Opsu.STATE_SONGMENU,
          new FadeOutTransition(Color.black),
          new FadeInTransition(Color.black));
      return false;
    }

    // show confirmation dialog if any downloads are active
    if (DownloadList.get().hasActiveDownloads()
        && UI.showExitConfirmation(DownloadList.EXIT_CONFIRMATION)) return false;
    if (Updater.get().getStatus() == Updater.Status.UPDATE_DOWNLOADING
        && UI.showExitConfirmation(Updater.EXIT_CONFIRMATION)) return false;

    return true;
  }