fixed drawing enabled laser when redrawing level playfield (MM engine)
authorHolger Schemel <info@artsoft.org>
Thu, 11 May 2017 19:01:25 +0000 (21:01 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 23 Mar 2018 22:21:13 +0000 (23:21 +0100)
src/game_mm/export.h
src/game_mm/mm_game.c
src/game_mm/mm_tools.c
src/game_mm/mm_tools.h

index d92dcdb..31c0177 100644 (file)
@@ -151,6 +151,7 @@ struct GameInfo_MM
   boolean cheat_no_explosion;
 
   int laser_overload_value;
+  boolean laser_enabled;
 };
 
 struct LevelInfo_MM
@@ -206,6 +207,8 @@ extern void InitGameEngine_MM();
 extern void InitGameActions_MM();
 extern void GameActions_MM(struct MouseActionInfo, boolean);
 
+extern void DrawLaser_MM();
+
 extern void ClickElement(int, int, int);
 
 extern unsigned int InitEngineRandom_MM(int);
index e2a2e5f..1e6c306 100644 (file)
@@ -606,6 +606,7 @@ void InitGameEngine_MM()
   game_mm.game_over_cause = 0;
 
   game_mm.laser_overload_value = 0;
+  game_mm.laser_enabled = FALSE;
 
   /* set global laser control values (must be set before "InitLaser()") */
   laser.start_edge.x = 0;
@@ -1329,6 +1330,13 @@ void DrawLaser(int start_edge, int mode)
   {
     DrawLaserExt(start_edge, laser.num_edges - start_edge, mode);
   }
+
+  game_mm.laser_enabled = mode;
+}
+
+void DrawLaser_MM()
+{
+  DrawLaser(0, game_mm.laser_enabled);
 }
 
 boolean HitElement(int element, int hit_mask)
index a2b7e45..8a9de52 100644 (file)
@@ -739,6 +739,7 @@ int el2gfx(int element)
 void RedrawPlayfield_MM()
 {
   DrawLevel_MM();
+  DrawLaser_MM();
 }
 
 void BlitScreenToBitmap_MM(Bitmap *target_bitmap)
index 3655ccf..d7a050d 100644 (file)
@@ -100,6 +100,7 @@ void DrawMiniElementOrWall_MM(int, int, int, int);
 
 void DrawField_MM(int, int);
 void DrawLevel_MM(void);
+void DrawLaser_MM(void);
 void DrawElement_MM(int, int, int);
 void DrawWallsExt_MM(int, int, int, int);
 void DrawWalls_MM(int, int, int);