X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fmain_bd.c;h=4404d0ab06d3765ffd1afb71ae93d1f3cdc04c36;hb=refs%2Fheads%2Fmaster-next-major-release;hp=dae512b67ffc72ebbe5d58ea7b31435f50014744;hpb=7e0902aa2014d4f2899972319f56fe9d5f24578d;p=rocksndiamonds.git diff --git a/src/game_bd/main_bd.c b/src/game_bd/main_bd.c index dae512b6..4404d0ab 100644 --- a/src/game_bd/main_bd.c +++ b/src/game_bd/main_bd.c @@ -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]; } }