From 091fb8657b4a793fb753c58fff21dbd2458c419f Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sun, 12 Mar 2023 15:55:49 +0100 Subject: [PATCH] moved handling game over condition from MM game engine to main engine --- src/game.c | 4 ++++ src/game_mm/export.h | 1 + src/game_mm/mm_game.c | 25 ++++++++----------------- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/game.c b/src/game.c index 2ae8886f..d91d8ac3 100644 --- a/src/game.c +++ b/src/game.c @@ -15668,6 +15668,10 @@ static char *getRestartGameMessage(void) 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 : "")); diff --git a/src/game_mm/export.h b/src/game_mm/export.h index 6fbe1aa9..4c98623d 100644 --- a/src/game_mm/export.h +++ b/src/game_mm/export.h @@ -147,6 +147,7 @@ struct GameInfo_MM boolean level_solved; boolean game_over; int game_over_cause; + char *game_over_message; boolean cheat_no_overload; boolean cheat_no_explosion; diff --git a/src/game_mm/mm_game.c b/src/game_mm/mm_game.c index 8cc08bc4..d57c5a3b 100644 --- a/src/game_mm/mm_game.c +++ b/src/game_mm/mm_game.c @@ -669,6 +669,7 @@ void InitGameEngine_MM(void) game_mm.level_solved = FALSE; game_mm.game_over = FALSE; game_mm.game_over_cause = 0; + game_mm.game_over_message = NULL; game_mm.laser_overload_value = 0; game_mm.laser_enabled = FALSE; @@ -805,25 +806,15 @@ static void FadeOutLaser(void) static void GameOver_MM(int game_over_cause) { - // do not handle game over if request dialog is already active - if (game.request_active) - return; - game_mm.game_over = TRUE; game_mm.game_over_cause = game_over_cause; - - // do not ask to play again if game was never actually played - if (!game.GamePlayed) - return; - - if (setup.ask_on_game_over) - game.restart_game_message = (game_over_cause == GAME_OVER_BOMB ? - "Bomb killed Mc Duffin! Play it again?" : - game_over_cause == GAME_OVER_NO_ENERGY ? - "Out of magic energy! Play it again?" : - game_over_cause == GAME_OVER_OVERLOADED ? - "Magic spell hit Mc Duffin! Play it again?" : - NULL); + game_mm.game_over_message = (game_over_cause == GAME_OVER_BOMB ? + "Bomb killed Mc Duffin!" : + game_over_cause == GAME_OVER_NO_ENERGY ? + "Out of magic energy!" : + game_over_cause == GAME_OVER_OVERLOADED ? + "Magic spell hit Mc Duffin!" : + NULL); SetTileCursorActive(FALSE); } -- 2.34.1