From: Holger Schemel Date: Thu, 7 Mar 2024 18:40:47 +0000 (+0100) Subject: fixed another graphical bug when using smooth movements with BD engine X-Git-Tag: 4.4.0.0-test-1~239 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=f5d6510e9169694a95703cdbe57694f9a06b670e;p=rocksndiamonds.git fixed another graphical bug when using smooth movements with BD engine --- 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; } }