X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame.c;h=dd9df82c71dd1bbb22e6eb9ae654837531ee6d20;hb=84c888496c5bf6f9e649882d77400c47634e177a;hp=b10c4f7102ac27d3e9879f48d9d3a1bc8112324f;hpb=1f6e5b67296a3c23aa8c28661d4ab21f688ddd34;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index b10c4f71..dd9df82c 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; @@ -5837,9 +5836,6 @@ static void Explode(int ex, int ey, int phase, int mode) int last_phase; int border_element; - // !!! eliminate this variable !!! - int delay = (game.emulation == EMU_SUPAPLEX ? 3 : 2); - if (game.explosions_delayed) { ExplodeField[ex][ey] = mode; @@ -6120,7 +6116,7 @@ static void Explode(int ex, int ey, int phase, int mode) int graphic = el_act2img(GfxElement[x][y], ACTION_EXPLODING); int frame = getGraphicAnimationFrameXY(graphic, x, y); - if (phase == delay) + if (phase == 1) TEST_DrawLevelFieldCrumbled(x, y); if (IS_WALKABLE_OVER(Back[x][y]) && Back[x][y] != EL_EMPTY) @@ -13952,7 +13948,7 @@ void KillPlayer(struct PlayerInfo *player) player->killed = TRUE; // remove accessible field at the player's position - Tile[jx][jy] = EL_EMPTY; + RemoveField(jx, jy); // deactivate shield (else Bang()/Explode() would not work right) player->shield_normal_time_left = 0; @@ -15633,10 +15629,26 @@ 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(void) +{ + char *message = getRestartGameMessage(); boolean has_started_game = hasStartedNetworkGame(); int request_mode = (has_started_game ? REQ_ASK : REQ_CONFIRM); int door_state = DOOR_CLOSE_1; @@ -15661,23 +15673,6 @@ 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 int game_over_delay = 0; @@ -15713,9 +15708,7 @@ boolean CheckRestartGame(void) if (!setup.ask_on_game_over) return FALSE; - game.restart_game_message = getRestartGameMessage(); - - RequestRestartGame(game.restart_game_message); + RequestRestartGame(); return TRUE; }