From: Holger Schemel Date: Sun, 5 Jan 2025 21:04:17 +0000 (+0100) Subject: fixed support for restart key when playing BD games with multiple lives X-Git-Tag: 4.4.0.1~49 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=2d9d7cb405466cd01ca4af924764a93bf77efec6;p=rocksndiamonds.git fixed support for restart key when playing BD games with multiple lives --- diff --git a/src/events.c b/src/events.c index bdec3b21..16a84e92 100644 --- a/src/events.c +++ b/src/events.c @@ -1409,16 +1409,6 @@ static void HandleButtonOrFinger(int mx, int my, int button) static boolean checkTextInputKey(Key key) { - static int game_status_last_static = -1; - int game_status_last = game_status_last_static; // game status from previous function call - - game_status_last_static = game_status; // set game status for next function call - - // needed after ending game using restart key without asking in BD engine with last life - // (to handle race condition due to handling all key events as key event and text event) - if (game_status_last == GAME_MODE_PLAYING) - return FALSE; - // when playing, only handle raw key events and ignore text input if (game_status == GAME_MODE_PLAYING) return FALSE; diff --git a/src/tape.c b/src/tape.c index a4b8ed96..cefc170f 100644 --- a/src/tape.c +++ b/src/tape.c @@ -1411,28 +1411,24 @@ void TapeRestartGame(void) return; } + if (!checkRestartGame("Restart game?")) + return; + if (level.game_engine_type == GAME_ENGINE_TYPE_BD && setup.bd_multiple_lives && game_status == GAME_MODE_PLAYING) { if (game_bd.global_lives > 1) { - if (!checkRestartGame("Restart game?")) - return; - + // decrement number of lives (also for intermissions; will be added later) game_bd.global_lives--; } else { - RequestQuitGame(FALSE); - - return; + // new BD game with multiple lives started, so set initial number of lives and global score + game_bd.global_lives = level.native_bd_level->caveset->initial_lives; + game_bd.global_score = 0; } } - else - { - if (!checkRestartGame("Restart game?")) - return; - } StartGameActions(network.enabled, setup.autorecord, level.random_seed); }