diff --git a/Source/engine/render/scrollrt.cpp b/Source/engine/render/scrollrt.cpp index bd300d728..aa9659b36 100644 --- a/Source/engine/render/scrollrt.cpp +++ b/Source/engine/render/scrollrt.cpp @@ -1510,6 +1510,20 @@ void CalcViewportGeometry() tileColums = (screenWidth - renderStart.x + TILE_WIDTH - 1) / TILE_WIDTH; } +Point GetScreenPosition(Point tile) +{ + Point firstTile = ViewPosition; + Displacement offset = {}; + CalcFirstTilePosition(firstTile, offset); + + Displacement delta = firstTile - tile; + + Point position {}; + position += delta.worldToScreen(); + position += offset; + return position; +} + extern SDL_Surface *PalSurface; void ClearScreenBuffer() diff --git a/Source/engine/render/scrollrt.h b/Source/engine/render/scrollrt.h index 73f25b508..d13c8cf14 100644 --- a/Source/engine/render/scrollrt.h +++ b/Source/engine/render/scrollrt.h @@ -60,6 +60,12 @@ void CalcTileOffset(int *offsetX, int *offsetY); void TilesInView(int *columns, int *rows); void CalcViewportGeometry(); +/** + * @brief Calculate the screen position of a given tile + * @param tile Position of a dungeon tile + */ +Point GetScreenPosition(Point tile); + /** * @brief Render the whole screen black */