setup.internal.program_copyright);
}
-int effectiveGameStatus()
-{
- if (game_status == GAME_MODE_INFO && info_mode == INFO_MODE_TITLE)
- return GAME_MODE_TITLE;
-
- return game_status;
-}
-
void DrawTitleScreenImage(int nr, boolean initial)
{
int graphic = getTitleScreenGraphic(nr, initial);
if (CheckTitleScreen(levelset_has_changed))
{
+ game_status_last_screen = GAME_MODE_MAIN;
game_status = GAME_MODE_TITLE;
DrawTitleScreen();
MapScreenMenuGadgets(SCREEN_MASK_MAIN);
/* copy actual game door content to door double buffer for OpenDoor() */
+ BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
BlitBitmap(drawto, bitmap_db_door_2, VX, VY, VXSIZE, VYSIZE, 0, 0);
OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
- DrawMaskedBorder(REDRAW_ALL);
+ DrawMaskedBorder(fade_mask);
FadeIn(fade_mask);
FadeSetEnterMenu();
last_sound = SND_UNDEFINED;
last_music = MUS_UNDEFINED;
- if (game_status == GAME_MODE_INFO)
+ if (game_status_last_screen == GAME_MODE_INFO)
{
if (num_title_screens == 0)
{
FadeSoundsAndMusic();
FadeOut(REDRAW_ALL);
+
+ /* only required to update logic for redrawing global border */
+ ClearField();
}
if (tci->is_image)
}
else if (button == MB_MENU_CHOICE)
{
- if (game_status == GAME_MODE_INFO && num_title_screens == 0)
+ if (game_status_last_screen == GAME_MODE_INFO && num_title_screens == 0)
{
FadeSetEnterScreen();
+ game_status = GAME_MODE_INFO;
info_mode = INFO_MODE_MAIN;
+
DrawInfoScreen();
return;
/* force full menu screen redraw after displaying title screens */
redraw_mask = REDRAW_ALL;
- if (game_status == GAME_MODE_INFO)
+ if (game_status_last_screen == GAME_MODE_INFO)
{
+ game_status = GAME_MODE_INFO;
info_mode = INFO_MODE_MAIN;
DrawInfoScreen();
}
else if (pos == MAIN_CONTROL_LEVEL_NUMBER && !button)
{
+ StopAnimation();
+
+ CloseDoor(DOOR_CLOSE_2);
+
game_status = GAME_MODE_LEVELNR;
ChangeViewportPropertiesIfNeeded();
{
if (leveldir_first)
{
+ StopAnimation();
+
+ CloseDoor(DOOR_CLOSE_2);
+
game_status = GAME_MODE_LEVELS;
SaveLevelSetup_LastSeries();
}
else if (pos == MAIN_CONTROL_SCORES)
{
+ StopAnimation();
+
+ CloseDoor(DOOR_CLOSE_2);
+
game_status = GAME_MODE_SCORES;
DrawHallOfFame(-1);
!strEqual(setup.player_name, "Artsoft"))
Request("This level is read only!", REQ_CONFIRM);
+ StopAnimation();
+
CloseDoor(DOOR_CLOSE_2);
game_status = GAME_MODE_EDITOR;
}
else if (pos == MAIN_CONTROL_INFO)
{
+ StopAnimation();
+
+ CloseDoor(DOOR_CLOSE_2);
+
game_status = GAME_MODE_INFO;
info_mode = INFO_MODE_MAIN;
}
else if (pos == MAIN_CONTROL_GAME)
{
+ StopAnimation();
+
StartGameActions(options.network, setup.autorecord, level.random_seed);
}
else if (pos == MAIN_CONTROL_SETUP)
{
+ StopAnimation();
+
+ CloseDoor(DOOR_CLOSE_2);
+
game_status = GAME_MODE_SETUP;
setup_mode = SETUP_MODE_MAIN;
FadeOut(fade_mask);
- if (fade_mask == REDRAW_ALL)
- {
- RedrawGlobalBorder();
-
- OpenDoor(DOOR_CLOSE_1 | DOOR_CLOSE_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
- }
+ OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
ClearField();
void DrawInfoScreen_TitleScreen()
{
+ game_status_last_screen = GAME_MODE_INFO;
+ game_status = GAME_MODE_TITLE;
+
DrawTitleScreen();
}
FadeOut(fade_mask);
+ OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
+
ClearField();
HandleChooseTree(0, 0, 0, 0, MB_MENU_INITIALIZE, ti_ptr);
MapScreenTreeGadgets(*ti_ptr);
+ DrawMaskedBorder(fade_mask);
+
FadeIn(fade_mask);
InitAnimation();
PlayMenuSound();
PlayMenuMusic();
+ OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
+
HandleHallOfFame(highlight_position, 0, 0, 0, MB_MENU_INITIALIZE);
+ DrawMaskedBorder(fade_mask);
+
FadeIn(fade_mask);
}
FadeOut(fade_mask);
+ OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
+
ClearField();
if (setup_mode == SETUP_MODE_MAIN)
if (redraw_all)
redraw_mask = fade_mask = REDRAW_ALL;
+ DrawMaskedBorder(fade_mask);
+
FadeIn(fade_mask);
InitAnimation();