added handling global animations during delays in Mirror Magic game engine
[rocksndiamonds.git] / src / game_mm / mm_game.c
index a1c9151d7274de14efdc66b6f8368c1ef58f7e66..6da722c13dd62de101a7a4c391442286dc2df383 100644 (file)
@@ -3127,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);
@@ -3252,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
@@ -3262,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);
@@ -3415,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;
@@ -3489,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)
@@ -3622,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);
@@ -3703,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;
@@ -3876,7 +3878,7 @@ void GameWon_MM(void)
       }
 
       BackToFront();
-      Delay(10);
+      Delay_WithScreenUpdates(10);
     }
 
     if (setup.sound_loops)
@@ -3904,7 +3906,7 @@ void GameWon_MM(void)
       */
 
       BackToFront();
-      Delay(10);
+      Delay_WithScreenUpdates(10);
     }
 
     if (setup.sound_loops)