X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=2cf0e9aa46a468e4eacf98bf528d34964359d322;hb=951e6d0a5b07999e3c919b1c689c71c108e45411;hp=ca13127d2e7a5866aef72e02591ed0b87daa459a;hpb=e2260726590fbcffca87320d7443153f0cdbdfe9;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index ca13127d..2cf0e9aa 100644 --- a/src/game.c +++ b/src/game.c @@ -4650,7 +4650,7 @@ void GameWon() void GameEnd() { int hi_pos; - boolean raise_level = FALSE; + int last_level_nr = level_nr; local_player->LevelSolved_GameEnd = TRUE; @@ -4693,32 +4693,36 @@ void GameEnd() if (setup.increment_levels && level_nr < leveldir_current->last_level) - raise_level = TRUE; /* advance to next level */ - - if ((hi_pos = NewHiScore(level_nr)) >= 0) { - SetGameStatus(GAME_MODE_SCORES); - - DrawHallOfFame(level_nr, hi_pos); + level_nr++; /* advance to next level */ + TapeErase(); /* start with empty tape */ - if (raise_level) + if (setup.auto_play_next_level) { - level_nr++; - TapeErase(); + LoadLevel(level_nr); + + SaveLevelSetup_SeriesInfo(); } } - else + + hi_pos = NewHiScore(last_level_nr); + + if (hi_pos >= 0 && !setup.skip_scores_after_game) { - SetGameStatus(GAME_MODE_MAIN); + SetGameStatus(GAME_MODE_SCORES); - if (raise_level) - { - level_nr++; - TapeErase(); - } + DrawHallOfFame(last_level_nr, hi_pos); + } + else if (!setup.auto_play_next_level || !setup.increment_levels) + { + SetGameStatus(GAME_MODE_MAIN); DrawMainMenu(); } + else + { + StartGameActions(network.enabled, setup.autorecord, level.random_seed); + } } int NewHiScore(int level_nr)