X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fbd_graphics.c;h=b122219a6284575695f305040db1560830ccf96d;hb=f5d6510e9169694a95703cdbe57694f9a06b670e;hp=b171b763b7ad261799cc12e4ac756befbde51924;hpb=40a2fe903817ae402dcce11b691391d15a590ff8;p=rocksndiamonds.git diff --git a/src/game_bd/bd_graphics.c b/src/game_bd/bd_graphics.c index b171b763..b122219a 100644 --- a/src/game_bd/bd_graphics.c +++ b/src/game_bd/bd_graphics.c @@ -61,6 +61,8 @@ static int cell_size = 0; // graphic info for game objects/frames and players/actions/frames struct GraphicInfo_BD graphic_info_bd_object[O_MAX_ALL][8]; +// graphic info for game graphics template for level-specific colors +struct GraphicInfo_BD graphic_info_bd_color_template; static inline int c64_png_colors(int r, int g, int b, int a) { @@ -611,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]; @@ -648,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; } }