fixed Makefile for distribution package (which has no Makefile for graphics)
[rocksndiamonds.git] / src / screens.c
index 264617545eca10292faeeebe26e54864e5dcefcb..8ec78ee60f455d7f0518bfd3517549040ca72c5f 100644 (file)
@@ -1485,11 +1485,12 @@ void DrawMainMenu()
   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();
@@ -1826,6 +1827,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
   }
   else if (pos == MAIN_CONTROL_LEVEL_NUMBER && !button)
   {
+    StopAnimation();
+
+    CloseDoor(DOOR_CLOSE_2);
+
     game_status = GAME_MODE_LEVELNR;
 
     ChangeViewportPropertiesIfNeeded();
@@ -1860,6 +1865,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
       {
        if (leveldir_first)
        {
+         StopAnimation();
+
+         CloseDoor(DOOR_CLOSE_2);
+
          game_status = GAME_MODE_LEVELS;
 
          SaveLevelSetup_LastSeries();
@@ -1875,6 +1884,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
       }
       else if (pos == MAIN_CONTROL_SCORES)
       {
+       StopAnimation();
+
+       CloseDoor(DOOR_CLOSE_2);
+
        game_status = GAME_MODE_SCORES;
 
        DrawHallOfFame(-1);
@@ -1885,6 +1898,8 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
            !strEqual(setup.player_name, "Artsoft"))
          Request("This level is read only!", REQ_CONFIRM);
 
+       StopAnimation();
+
        CloseDoor(DOOR_CLOSE_2);
 
        game_status = GAME_MODE_EDITOR;
@@ -1895,6 +1910,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
       }
       else if (pos == MAIN_CONTROL_INFO)
       {
+       StopAnimation();
+
+       CloseDoor(DOOR_CLOSE_2);
+
        game_status = GAME_MODE_INFO;
        info_mode = INFO_MODE_MAIN;
 
@@ -1904,10 +1923,16 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
       }
       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;
 
@@ -2134,12 +2159,7 @@ static void DrawInfoScreen_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();
 
@@ -3635,11 +3655,15 @@ static void DrawChooseTree(TreeInfo **ti_ptr)
 
   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();
@@ -4145,8 +4169,12 @@ void DrawHallOfFame(int highlight_position)
   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);
 }
 
@@ -5744,6 +5772,8 @@ static void DrawSetupScreen_Generic()
 
   FadeOut(fade_mask);
 
+  OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
+
   ClearField();
 
   if (setup_mode == SETUP_MODE_MAIN)
@@ -5831,6 +5861,8 @@ static void DrawSetupScreen_Generic()
   if (redraw_all)
     redraw_mask = fade_mask = REDRAW_ALL;
 
+  DrawMaskedBorder(fade_mask);
+
   FadeIn(fade_mask);
 
   InitAnimation();