fixed bug with reanimating killed player by CE condition
[rocksndiamonds.git] / src / game_sp / main.c
index 3373d46085fe9ddee101e4737914f95f34b39501..7eed1dd5d44bde6fb11c22abb8b14359d2517156 100644 (file)
@@ -9,17 +9,17 @@ struct LevelInfo_SP native_sp_level;
 int GfxElementLast[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
 int GfxGraphicLast[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
 int GfxGraphic[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
-int GfxFrame[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
+int GfxFrameSP[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
 
 
-void InitGameEngine_SP()
+void InitGameEngine_SP(void)
 {
   int x, y;
 
   gfx.anim_random_frame = -1;  // (use simple, ad-hoc random numbers)
 
-  game_sp.LevelSolved = FALSE;
-  game_sp.GameOver = FALSE;
+  game_sp.level_solved = FALSE;
+  game_sp.game_over = FALSE;
 
   game_sp.time_played = 0;
   game_sp.infotrons_still_needed = native_sp_level.header.InfotronsNeeded;
@@ -43,7 +43,7 @@ void InitGameEngine_SP()
       GfxElementLast[x][y] = -1;
       GfxGraphicLast[x][y] = -1;
       GfxGraphic[x][y] = -1;
-      GfxFrame[x][y] = 0;
+      GfxFrameSP[x][y] = 0;
     }
   }
 
@@ -54,13 +54,17 @@ void InitGameEngine_SP()
 
 void RedrawPlayfield_SP(boolean force_redraw)
 {
+  // skip redrawing playfield in warp mode or when testing tapes with "autotest"
+  if (DrawingDeactivatedField())
+    return;
+
   if (force_redraw)
     RestorePlayfield();
 
   UpdatePlayfield(force_redraw);
 }
 
-void UpdateGameDoorValues_SP()
+static void UpdateGameDoorValues_SP(void)
 {
   game_sp.time_played = TimerVar / FRAMES_PER_SECOND;
   game_sp.infotrons_still_needed = InfotronsNeeded;
@@ -87,13 +91,13 @@ void GameActions_SP(byte action[MAX_PLAYERS], boolean warp_mode)
 
   for (x = DisplayMinX; x <= DisplayMaxX; x++)
     for (y = DisplayMinY; y <= DisplayMaxY; y++)
-      GfxFrame[x][y]++;
+      GfxFrameSP[x][y]++;
 }
 
-int getRedDiskReleaseFlag_SP()
+int getRedDiskReleaseFlag_SP(void)
 {
-  /* 0: when Murphy is moving (including the destination tile!) */
-  /* 1: when Murphy is not moving for at least one game frame */
+  // 0: when Murphy is moving (including the destination tile!)
+  // 1: when Murphy is not moving for at least one game frame
 
   return RedDiskReleaseFlag;
 }