fixed bug with drawing diagonal player movement in BD engine
authorHolger Schemel <holger.schemel@virtion.de>
Mon, 23 Sep 2024 18:28:57 +0000 (20:28 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Mon, 23 Sep 2024 18:29:00 +0000 (20:29 +0200)
This fixes drawing a game element moving into the tile just left by
the diagonally moving player (as described in the last commit).

src/game_bd/bd_graphics.c

index 4c7c5cd6fb006328160a8e53629c6655d8f06491..021e7c152af9ee64c13e2ccd3d616c09530e0c1b 100644 (file)
@@ -681,10 +681,8 @@ static void gd_drawcave_tile(Bitmap *dest, GdGame *game, int x, int y, boolean d
   // if element is moving away from this tile, determine element that is moving
   if (is_moving_from)
   {
-    int dx = (dir_from == GD_MV_LEFT ? -1 : dir_from == GD_MV_RIGHT ? +1 : 0);
-    int dy = (dir_from == GD_MV_UP   ? -1 : dir_from == GD_MV_DOWN  ? +1 : 0);
-    int new_x = cave->getx(cave, x + dx, y + dy);
-    int new_y = cave->gety(cave, x + dx, y + dy);
+    int new_x = cave->getx(cave, x + dx_from, y + dy_from);
+    int new_y = cave->gety(cave, x + dx_from, y + dy_from);
     int new_dir_to = game->dir_buffer_to[new_y][new_x];
 
     tile_from = game->element_buffer[new_y][new_x];