added handling global animations during delays in Mirror Magic game engine
[rocksndiamonds.git] / src / game_mm / mm_game.c
index e4f4ba1b48a0d8dd75309813b49ec578f7b72c61..6da722c13dd62de101a7a4c391442286dc2df383 100644 (file)
@@ -660,10 +660,6 @@ void InitGameEngine_MM(void)
     }
   }
 
-#if 0
-  CloseDoor(DOOR_CLOSE_1);
-#endif
-
   DrawLevel_MM();
 }
 
@@ -675,36 +671,6 @@ void InitGameActions_MM(void)
 
   InitLaser();
 
-#if 0
-  // copy default game door content to main double buffer
-  BlitBitmap(pix[PIX_DOOR], drawto,
-            DOOR_GFX_PAGEX5, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE, DX, DY);
-#endif
-
-#if 0
-  DrawText(DX_LEVEL, DY_LEVEL,
-          int2str(level_nr, 2), FONT_TEXT_2);
-  DrawText(DX_KETTLES, DY_KETTLES,
-          int2str(game_mm.kettles_still_needed, 3), FONT_TEXT_2);
-  DrawText(DX_SCORE, DY_SCORE,
-          int2str(game_mm.score, 4), FONT_TEXT_2);
-#endif
-
-#if 0
-  UnmapGameButtons();
-  MapGameButtons();
-#endif
-
-#if 0
-  // copy actual game door content to door double buffer for OpenDoor()
-  BlitBitmap(drawto, pix[PIX_DB_DOOR],
-            DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
-#endif
-
-#if 0
-  OpenDoor(DOOR_OPEN_ALL);
-#endif
-
   for (i = 0; i <= num_init_game_frames; i++)
   {
     if (i == num_init_game_frames)
@@ -735,11 +701,6 @@ void InitGameActions_MM(void)
 #endif
   }
 
-#if 0
-  if (setup.sound_music && num_bg_loops)
-    PlayMusic(level_nr % num_bg_loops);
-#endif
-
   ScanLaser();
 
   if (game_mm.kettles_still_needed == 0)
@@ -2889,8 +2850,8 @@ void RotateMirror(int x, int y, int button)
   {
     if (button == MB_LEFTBUTTON)
     {
-      /* left mouse button only for manual adjustment, no auto-rotating;
-        freeze mirror for until mouse button released */
+      // left mouse button only for manual adjustment, no auto-rotating;
+      // freeze mirror for until mouse button released
       hold_x = x;
       hold_y = y;
     }
@@ -3148,12 +3109,6 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
     {
       game_mm.energy_left--;
 
-#if 0
-      BlitBitmap(pix[PIX_DOOR], drawto,
-                DOOR_GFX_PAGEX5 + XX_ENERGY, DOOR_GFX_PAGEY1 + YY_ENERGY,
-                ENERGY_XSIZE, ENERGY_YSIZE - game_mm.energy_left,
-                DX_ENERGY, DY_ENERGY);
-#endif
       redraw_mask |= REDRAW_DOOR_1;
     }
     else if (setup.time_limit && !game_mm.game_over)
@@ -3172,7 +3127,7 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
 
        DrawLaser(0, DL_LASER_ENABLED);
        BackToFront();
-       Delay(50);
+       Delay_WithScreenUpdates(50);
       }
 
       StopSound_MM(SND_MM_GAME_HEALTH_CHARGING);
@@ -3260,9 +3215,6 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
                        (native_mm_level.laser_blue  ? color_down : 0x00));
 
       DrawLaser(0, DL_LASER_ENABLED);
-#if 0
-      BackToFront();
-#endif
     }
 
     if (!laser.overloaded)
@@ -3300,6 +3252,8 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
     {
       int i;
 
+      UpdateAndDisplayGameControlValues();
+
       for (i = 15; i >= 0; i--)
       {
 #if 0
@@ -3310,7 +3264,7 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
 
        DrawLaser(0, DL_LASER_ENABLED);
        BackToFront();
-       Delay(50);
+       Delay_WithScreenUpdates(50);
       }
 
       DrawLaser(0, DL_LASER_DISABLED);
@@ -3463,7 +3417,7 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
 
       DrawLaser(0, DL_LASER_ENABLED);
 
-      Delay(50);
+      Delay_WithScreenUpdates(50);
     }
 
     Feld[ELX][ELY] = element;
@@ -3537,7 +3491,7 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
 
       DrawWallsAnimation_MM(ELX, ELY, Feld[ELX][ELY], phase, laser.wall_mask);
       BackToFront();
-      Delay(100);
+      Delay_WithScreenUpdates(100);
     }
 
     if (Feld[ELX][ELY] == EL_WALL_ICE)
@@ -3670,7 +3624,7 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
       DrawWallsAnimation_MM(dx, dy, de, i, dm);
 
       BackToFront();
-      Delay(20);
+      Delay_WithScreenUpdates(20);
     }
 
     DrawLaser(0, DL_LASER_ENABLED);
@@ -3751,7 +3705,7 @@ static void GameActions_MM_Ext(struct MouseActionInfo action, boolean warp_mode)
       redraw_mask |= REDRAW_DOOR_1;
       BackToFront();
 
-      Delay(20);
+      Delay_WithScreenUpdates(20);
     }
 
     game_mm.energy_left = MAX_LASER_ENERGY;
@@ -3924,7 +3878,7 @@ void GameWon_MM(void)
       }
 
       BackToFront();
-      Delay(10);
+      Delay_WithScreenUpdates(10);
     }
 
     if (setup.sound_loops)
@@ -3952,17 +3906,13 @@ void GameWon_MM(void)
       */
 
       BackToFront();
-      Delay(10);
+      Delay_WithScreenUpdates(10);
     }
 
     if (setup.sound_loops)
       StopSound(SND_SIRR);
   }
 
-#if 0
-  FadeSounds();
-#endif
-
   CloseDoor(DOOR_CLOSE_1);
 
   Request("Level solved!", REQ_CONFIRM);
@@ -4198,11 +4148,6 @@ void PlaySoundLevel(int x, int y, int sound_nr)
 static void RaiseScore_MM(int value)
 {
   game_mm.score += value;
-
-#if 0
-  DrawText(DX_SCORE, DY_SCORE, int2str(game_mm.score, 4),
-          FONT_TEXT_2);
-#endif
 }
 
 void RaiseScoreElement_MM(int element)