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 d92dcdb2f8cf2c5e09aa41fb35512152349023f3..31c01770df18c90b5f1ad8a9f046ff18441ab0d3 100644 (file)
@@ -151,6 +151,7 @@ struct GameInfo_MM
   boolean cheat_no_explosion;
 
   int laser_overload_value;
   boolean cheat_no_explosion;
 
   int laser_overload_value;
+  boolean laser_enabled;
 };
 
 struct LevelInfo_MM
 };
 
 struct LevelInfo_MM
@@ -206,6 +207,8 @@ extern void InitGameEngine_MM();
 extern void InitGameActions_MM();
 extern void GameActions_MM(struct MouseActionInfo, boolean);
 
 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);
 extern void ClickElement(int, int, int);
 
 extern unsigned int InitEngineRandom_MM(int);
index e2a2e5f8745093c0387e208640e44a1128d6c26f..1e6c30615c7f5b4b6b0473dedad998a4fadffcee 100644 (file)
@@ -606,6 +606,7 @@ void InitGameEngine_MM()
   game_mm.game_over_cause = 0;
 
   game_mm.laser_overload_value = 0;
   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;
 
   /* 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);
   }
   {
     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)
 }
 
 boolean HitElement(int element, int hit_mask)
index a2b7e4510f3b41bff021f538a531c42161306c89..8a9de52af4d253e5f5e06de13bb4a2ee7175ad20 100644 (file)
@@ -739,6 +739,7 @@ int el2gfx(int element)
 void RedrawPlayfield_MM()
 {
   DrawLevel_MM();
 void RedrawPlayfield_MM()
 {
   DrawLevel_MM();
+  DrawLaser_MM();
 }
 
 void BlitScreenToBitmap_MM(Bitmap *target_bitmap)
 }
 
 void BlitScreenToBitmap_MM(Bitmap *target_bitmap)
index 3655ccf4a2e2ef8110cdd093a15cd2d6b935ca19..d7a050de496b25c792629392462a3431ab8a0a54 100644 (file)
@@ -100,6 +100,7 @@ void DrawMiniElementOrWall_MM(int, int, int, int);
 
 void DrawField_MM(int, int);
 void DrawLevel_MM(void);
 
 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);
 void DrawElement_MM(int, int, int);
 void DrawWallsExt_MM(int, int, int, int);
 void DrawWalls_MM(int, int, int);