From f5d6510e9169694a95703cdbe57694f9a06b670e Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Thu, 7 Mar 2024 19:40:47 +0100 Subject: [PATCH] fixed another graphical bug when using smooth movements with BD engine --- src/game_bd/bd_graphics.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/game_bd/bd_graphics.c b/src/game_bd/bd_graphics.c index 4797f8ed..b122219a 100644 --- a/src/game_bd/bd_graphics.c +++ b/src/game_bd/bd_graphics.c @@ -613,8 +613,8 @@ static void gd_drawcave_tile(Bitmap *dest, GdGame *game, int x, int y, boolean d // redraw previous game element on the cave field the new element is moving to int tile_last = game->last_element_buffer[y][x]; - // only redraw previous game element if it is not collectible (like dirt etc.) - if (is_collectible(tile_last)) + // only redraw previous game element if it is diggable (like dirt etc.) + if (!is_diggable(tile_last)) tile_last = O_SPACE; struct GraphicInfo_BD *g_old = &graphic_info_bd_object[tile_last][frame]; @@ -650,7 +650,9 @@ static void gd_drawcave_tile(Bitmap *dest, GdGame *game, int x, int y, boolean d else { // if old tile also moving (like pushing player), do not redraw tile background - game->last_element_buffer[old_y][old_x] |= SKIPPED; + // (but redraw if tile and old tile are moving/falling into different directions) + if (game->dir_buffer[old_y][old_x] == game->dir_buffer[y][x]) + game->last_element_buffer[old_y][old_x] |= SKIPPED; } } -- 2.34.1