cleanup of unnecessarily convoluted function call
[rocksndiamonds.git] / src / game_bd / main_bd.c
index dae512b67ffc72ebbe5d58ea7b31435f50014744..4404d0ab06d3765ffd1afb71ae93d1f3cdc04c36 100644 (file)
@@ -339,6 +339,11 @@ void InitGameEngine_BD(void)
   game_bd.game->itercycle = 0;
   game_bd.game->itermax = 8;   // default; dynamically changed at runtime
   game_bd.game->itermax_last = game_bd.game->itermax;
+  game_bd.game->itermax2[0] = game_bd.game->itermax;
+  game_bd.game->itermax2[1] = game_bd.game->itermax;
+
+  game_bd.player_moving = FALSE;
+  game_bd.player_snapping = FALSE;
 
   // default: start with completely covered playfield
   int next_state = GAME_INT_START_UNCOVER + 1;
@@ -437,6 +442,15 @@ void GameActions_BD(byte action[MAX_PLAYERS])
     play_game_func(game_bd.game, action[0]);
   }
 
+  boolean single_step_mode_paused =
+    CheckSingleStepMode_BD(check_iteration_reached(game_bd.game),
+                           game_bd.player_moving,
+                           game_bd.player_snapping);
+
+  // draw final movement animation frame before going to single step pause mode
+  if (single_step_mode_paused)
+    game_bd.game->itercycle = game_bd.game->itermax - 1;
+
   RedrawPlayfield_BD(FALSE);
 
   UpdateGameDoorValues_BD();
@@ -560,7 +574,8 @@ void SaveEngineSnapshotValues_BD(void)
     {
       engine_snapshot_bd.element_buffer[x][y]      = game->element_buffer[y][x];
       engine_snapshot_bd.last_element_buffer[x][y] = game->last_element_buffer[y][x];
-      engine_snapshot_bd.dir_buffer[x][y]          = game->dir_buffer[y][x];
+      engine_snapshot_bd.dir_buffer_from[x][y]     = game->dir_buffer_from[y][x];
+      engine_snapshot_bd.dir_buffer_to[x][y]       = game->dir_buffer_to[y][x];
       engine_snapshot_bd.gfx_buffer[x][y]          = game->gfx_buffer[y][x];
     }
   }
@@ -591,7 +606,8 @@ void LoadEngineSnapshotValues_BD(void)
 
   engine_snapshot_bd.game.element_buffer      = game->element_buffer;
   engine_snapshot_bd.game.last_element_buffer = game->last_element_buffer;
-  engine_snapshot_bd.game.dir_buffer          = game->dir_buffer;
+  engine_snapshot_bd.game.dir_buffer_from     = game->dir_buffer_from;
+  engine_snapshot_bd.game.dir_buffer_to       = game->dir_buffer_to;
   engine_snapshot_bd.game.gfx_buffer          = game->gfx_buffer;
 
   *game = engine_snapshot_bd.game;
@@ -602,7 +618,8 @@ void LoadEngineSnapshotValues_BD(void)
     {
       game->element_buffer[y][x]      = engine_snapshot_bd.element_buffer[x][y];
       game->last_element_buffer[y][x] = engine_snapshot_bd.last_element_buffer[x][y];
-      game->dir_buffer[y][x]          = engine_snapshot_bd.dir_buffer[x][y];
+      game->dir_buffer_from[y][x]     = engine_snapshot_bd.dir_buffer_from[x][y];
+      game->dir_buffer_to[y][x]       = engine_snapshot_bd.dir_buffer_to[x][y];
       game->gfx_buffer[y][x]          = engine_snapshot_bd.gfx_buffer[x][y];
     }
   }