X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_game.c;h=39a17d94f6bbf4865ec232bbff03c6a4da6b6981;hb=a89938c68a022cd42f70a7f84b572ba1aa2dff3e;hp=8a7d381e44ebca3acbb941b3e4b2eb0c04d691b5;hpb=921ef9da94834d92d32a87785fd35ab0615cba7a;p=rocksndiamonds.git diff --git a/src/game_mm/mm_game.c b/src/game_mm/mm_game.c index 8a7d381e..39a17d94 100644 --- a/src/game_mm/mm_game.c +++ b/src/game_mm/mm_game.c @@ -292,15 +292,12 @@ void InitGameEngine_MM() { int i, x, y; - /* set global editor control values */ - editor.draw_walls_masked = FALSE; - /* set global game control values */ game_mm.num_cycle = 0; 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; @@ -310,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; @@ -351,8 +350,10 @@ void InitGameEngine_MM() DrawLevel_MM(); } -void InitGameEngine_MM_AfterFadingIn() +void InitGameActions_MM() { + int i; + InitCycleElements(); InitLaser(); @@ -389,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(); @@ -412,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) @@ -571,6 +565,10 @@ void ScanLaser() int element; int end = 0, rf = laser.num_edges; + /* do not scan laser again after the game was lost for whatever reason */ + if (game_mm.game_over) + return; + laser.overloaded = FALSE; laser.stops_inside_element = FALSE; @@ -2921,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;