X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=07df1fe52a4f6676eb3713d170144b032a45a448;hb=881aea4bdbd831b4c5833a697d64b0a4bd7962ee;hp=48f5e7f158e13c68da188ade38a79d427057f63b;hpb=19b66a27a5959f35c14f5c28b9b4645e89888159;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 48f5e7f1..07df1fe5 100644 --- a/src/game.c +++ b/src/game.c @@ -15373,12 +15373,12 @@ void RequestQuitGameExt(boolean skip_request, boolean quick_quit, char *message) { if (skip_request || Request(message, REQ_ASK | REQ_STAY_CLOSED)) { - // closing door required in case of envelope style request dialogs - if (!skip_request) + if (!quick_quit) { // prevent short reactivation of overlay buttons while closing door SetOverlayActive(FALSE); + // door may still be open due to skipped or envelope style request CloseDoor(DOOR_CLOSE_1); } @@ -15406,10 +15406,13 @@ void RequestQuitGameExt(boolean skip_request, boolean quick_quit, char *message) } } -void RequestQuitGame(boolean ask_if_really_quit) +void RequestQuitGame(boolean escape_key_pressed) { - boolean quick_quit = (!ask_if_really_quit || level_editor_test_game); - boolean skip_request = game.all_players_gone || quick_quit; + boolean ask_on_escape = (setup.ask_on_escape && setup.ask_on_quit_game); + boolean quick_quit = ((escape_key_pressed && !ask_on_escape) || + level_editor_test_game); + boolean skip_request = (game.all_players_gone || !setup.ask_on_quit_game || + quick_quit); RequestQuitGameExt(skip_request, quick_quit, "Do you really want to quit the game?"); @@ -16271,7 +16274,7 @@ static void HandleGameButtonsExt(int id, int button) if (tape.playing) TapeStop(); else - RequestQuitGame(TRUE); + RequestQuitGame(FALSE); break;