X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=83b0c1f3cb94a98767c21573f527dcdaac6ee1c2;hb=5888edfa42bf4f5cf1772453b60937c7cedffe08;hp=df3c8b1344bb1e384b77a799c220e6245d4b97d8;hpb=399d3c33aeab5a881da14d0ff7c1cb6aada4d992;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index df3c8b13..83b0c1f3 100644 --- a/src/game.c +++ b/src/game.c @@ -1841,6 +1841,7 @@ static void InitFieldForEngine_RND(int x, int y) // convert BD engine elements to corresponding R'n'D engine elements element = (element == EL_BD_EMPTY ? EL_EMPTY : + element == EL_BD_PLAYER ? EL_PLAYER_1 : element == EL_BD_INBOX ? EL_PLAYER_1 : element == EL_BD_SAND ? EL_SAND : element == EL_BD_STEELWALL ? EL_STEELWALL : @@ -4905,6 +4906,27 @@ static void LevelSolved(void) LevelSolved_SetFinalGameValues(); } +static void AdvanceToNextLevel(void) +{ + if (setup.increment_levels && + level_nr < leveldir_current->last_level && + !network_playing) + { + level_nr++; // advance to next level + TapeErase(); // start with empty tape + + if (setup.auto_play_next_level) + { + scores.continue_playing = TRUE; + scores.next_level_nr = level_nr; + + LoadLevel(level_nr); + + SaveLevelSetup_SeriesInfo(); + } + } +} + void GameWon(void) { static int time_count_steps; @@ -5182,23 +5204,8 @@ void GameEnd(void) // save score and score tape before potentially erasing tape below NewHighScore(last_level_nr, tape_saved); - if (setup.increment_levels && - level_nr < leveldir_current->last_level && - !network_playing) - { - level_nr++; // advance to next level - TapeErase(); // start with empty tape - - if (setup.auto_play_next_level) - { - scores.continue_playing = TRUE; - scores.next_level_nr = level_nr; - - LoadLevel(level_nr); - - SaveLevelSetup_SeriesInfo(); - } - } + // increment and load next level (if possible and not configured otherwise) + AdvanceToNextLevel(); if (scores.last_added >= 0 && setup.show_scores_after_game) {