X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=6e0914df5e867453e176780bf7daf1d940a1ee48;hb=3c036eb0bd76347ddaaf112018512c9f2a357e1f;hp=c5d941dd093b0882faf8d9b2dbd16c1e7ea23f86;hpb=c118d37bf6ad02e90d4ea7c4a4d7d34d8f745c26;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index c5d941dd..6e0914df 100644 --- a/src/game.c +++ b/src/game.c @@ -4515,7 +4515,6 @@ void InitGame(void) } game.restart_level = FALSE; - game.restart_game_message = NULL; game.request_active = FALSE; game.request_active_or_moving = FALSE; @@ -15633,10 +15632,25 @@ void RequestQuitGame(boolean escape_key_pressed) "Do you really want to quit the game?"); } -void RequestRestartGame(char *message) +static char *getRestartGameMessage(void) { - game.restart_game_message = NULL; + boolean play_again = hasStartedNetworkGame(); + static char message[MAX_OUTPUT_LINESIZE]; + char *game_over_text = "Game over!"; + char *play_again_text = " Play it again?"; + if (level.game_engine_type == GAME_ENGINE_TYPE_MM && + game_mm.game_over_message != NULL) + game_over_text = game_mm.game_over_message; + + snprintf(message, MAX_OUTPUT_LINESIZE, "%s%s", game_over_text, + (play_again ? play_again_text : "")); + + return message; +} + +static void RequestRestartGame(char *message) +{ boolean has_started_game = hasStartedNetworkGame(); int request_mode = (has_started_game ? REQ_ASK : REQ_CONFIRM); int door_state = DOOR_CLOSE_1; @@ -15661,33 +15675,14 @@ void RequestRestartGame(char *message) } } -static char *getRestartGameMessage(void) -{ - boolean play_again = hasStartedNetworkGame(); - static char message[MAX_OUTPUT_LINESIZE]; - char *game_over_text = "Game over!"; - char *play_again_text = " Play it again?"; - - if (level.game_engine_type == GAME_ENGINE_TYPE_MM && - game_mm.game_over_message != NULL) - game_over_text = game_mm.game_over_message; - - snprintf(message, MAX_OUTPUT_LINESIZE, "%s%s", game_over_text, - (play_again ? play_again_text : "")); - - return message; -} - boolean CheckRestartGame(void) { - static boolean last_game_over = FALSE; static int game_over_delay = 0; int game_over_delay_value = 50; boolean game_over = checkGameFailed(); if (!game_over) { - last_game_over = FALSE; game_over_delay = game_over_delay_value; return FALSE; @@ -15715,19 +15710,9 @@ boolean CheckRestartGame(void) if (!setup.ask_on_game_over) return FALSE; - if (last_game_over != game_over) - game.restart_game_message = getRestartGameMessage(); - - last_game_over = game_over; - - if (game.restart_game_message != NULL) - { - RequestRestartGame(game.restart_game_message); - - return TRUE; - } + RequestRestartGame(getRestartGameMessage()); - return FALSE; + return TRUE; } boolean checkGameSolved(void)