game_panel_controls[GAME_PANEL_TIME_MM].value = (time / 60) % 60;
game_panel_controls[GAME_PANEL_TIME_SS].value = time % 60;
- if (game.no_time_limit)
+ if (level.time == 0)
game_panel_controls[GAME_PANEL_TIME_ANIM].value = 100;
else
game_panel_controls[GAME_PANEL_TIME_ANIM].value = time * 100 / level.time;
else
FadeSetEnterScreen();
- if (CheckIfGlobalBorderHasChanged())
+ if (CheckIfGlobalBorderOrPlayfieldViewportHasChanged())
fade_mask = REDRAW_ALL;
FadeLevelSoundsAndMusic();
}
game.restart_level = FALSE;
+ game.restart_game_message = NULL;
if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
InitGameActions_MM();
local_player->LevelSolved_GameEnd = TRUE;
- if (!global.use_envelope_request)
- CloseDoor(DOOR_CLOSE_1);
-
if (local_player->LevelSolved_SaveTape)
{
+ /* make sure that request dialog to save tape does not open door again */
+ if (!global.use_envelope_request)
+ CloseDoor(DOOR_CLOSE_1);
+
SaveTapeChecked(tape.level_nr); /* ask to save tape */
}
+ /* if no tape is to be saved, close both doors simultaneously */
CloseDoor(DOOR_CLOSE_ALL);
if (level_editor_test_game)
"Do you really want to quit the game?");
}
+void RequestRestartGame(char *message)
+{
+ game.restart_game_message = NULL;
+
+ if (Request(message, REQ_ASK | REQ_STAY_CLOSED))
+ {
+ StartGameActions(options.network, setup.autorecord, level.random_seed);
+ }
+ else
+ {
+ SetGameStatus(GAME_MODE_MAIN);
+
+ DrawMainMenu();
+ }
+}
+
/* ------------------------------------------------------------------------- */
/* random generator functions */
LoadEngineSnapshotValues_EM();
if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
LoadEngineSnapshotValues_SP();
- if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
+ if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
LoadEngineSnapshotValues_MM();
}
SetAudioMode(setup.sound);
- PlayLevelMusic();
+ if (game_status == GAME_MODE_PLAYING)
+ PlayLevelMusic();
}
RedrawSoundButtonGadget(id);