enabled initial charging of laser energy (MM engine)
[rocksndiamonds.git] / src / game_mm / mm_game.c
index 97dc986b20ea1fba1c617dbffb010cb660319b5c..39a17d94f6bbf4865ec232bbff03c6a4da6b6981 100644 (file)
@@ -297,7 +297,7 @@ void InitGameEngine_MM()
   game_mm.num_pacman = 0;
 
   game_mm.score = 0;
-  game_mm.energy_left = native_mm_level.time;
+  game_mm.energy_left = 0;     // later set to "native_mm_level.time"
   game_mm.kettles_still_needed =
     (native_mm_level.auto_count_kettles ? 0 : native_mm_level.kettles_needed);
   game_mm.lights_still_needed = 0;
@@ -307,6 +307,8 @@ void InitGameEngine_MM()
   game_mm.game_over = FALSE;
   game_mm.game_over_cause = 0;
 
+  game_mm.laser_overload_value = 0;
+
   /* set global laser control values (must be set before "InitLaser()") */
   laser.start_edge.x = 0;
   laser.start_edge.y = 0;
@@ -348,8 +350,10 @@ void InitGameEngine_MM()
   DrawLevel_MM();
 }
 
-void InitGameEngine_MM_AfterFadingIn()
+void InitGameActions_MM()
 {
+  int i;
+
   InitCycleElements();
   InitLaser();
 
@@ -386,21 +390,15 @@ void InitGameEngine_MM_AfterFadingIn()
   if (setup.sound_loops)
     PlaySoundExt(SND_FUEL, SOUND_MAX_VOLUME, SOUND_MAX_RIGHT, SND_CTRL_PLAY_LOOP);
 
-#if 0 // !!! TEMPORARILY DISABLED !!!
-  for (i = 0; i <= game_mm.energy_left; i += 2)
+  for (i = 0; i <= native_mm_level.time; i += 2)
   {
     if (!setup.sound_loops)
       PlaySoundStereo(SND_FUEL, SOUND_MAX_RIGHT);
 
-#if 0
-    BlitBitmap(pix[PIX_DOOR], drawto,
-              DOOR_GFX_PAGEX4 + XX_ENERGY,
-              DOOR_GFX_PAGEY1 + YY_ENERGY + ENERGY_YSIZE - i,
-              ENERGY_XSIZE, i,
-              DX_ENERGY, DY_ENERGY + ENERGY_YSIZE - i);
-#endif
+    game_mm.energy_left = i;
+
+    UpdateAndDisplayGameControlValues();
 
-    redraw_mask |= REDRAW_DOOR_1;
     BackToFront();
 
     ColorCycling();
@@ -409,13 +407,12 @@ void InitGameEngine_MM_AfterFadingIn()
     if (setup.quick_doors)
       continue;
 #endif
-
-    Delay(20);
   }
 
+  game_mm.energy_left = native_mm_level.time;
+
   if (setup.sound_loops)
     StopSound(SND_FUEL);
-#endif
 
 #if 0
   if (setup.sound_music && num_bg_loops)
@@ -2922,6 +2919,8 @@ static void GameActions_MM_Ext(byte action[MAX_PLAYERS], boolean warp_mode)
       laser.overload_value = 0;
     }
 
+    game_mm.laser_overload_value = laser.overload_value;
+
     if (laser.overload_value < MAX_LASER_OVERLOAD - 8)
     {
       int color_up = 0xFF * laser.overload_value / MAX_LASER_OVERLOAD;