1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_COORDINATES_H_
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_COORDINATES_H_
29namespace dungeon_coords {
64inline std::pair<int, int>
CanvasToRoom(
int canvas_x,
int canvas_y) {
77 if (scale <= 0.0f) scale = 1.0f;
78 return {
static_cast<int>(screen_x / scale),
79 static_cast<int>(screen_y / scale)};
91 return {
static_cast<int>(canvas_x * scale),
92 static_cast<int>(canvas_y * scale)};
102 return canvas_x >= -margin && canvas_y >= -margin &&
114 if (room_x < 0) room_x = 0;
116 if (room_y < 0) room_y = 0;
118 return {room_x, room_y};
219 if (world_x < 0) { col = 0; local_x = 0; }
220 if (world_y < 0) { row = 0; local_y = 0; }
constexpr int kDungeonGridWidth
bool IsValidRoomId(int room_id)
Validate room ID is within valid range.
std::pair< uint16_t, uint16_t > TileToCameraCoords(int room_id, int tile_x, int tile_y)
Calculate camera coordinates from room and tile position.
std::pair< int, int > CanvasToScreen(int canvas_x, int canvas_y, float scale)
Convert canvas coordinates to screen coordinates (apply scale)
uint16_t CalculateCameraX(int room_id, int local_pixel_x)
Calculate absolute camera X coordinate from room and local position.
std::pair< int, int > ScreenToCanvas(int screen_x, int screen_y, float scale)
Convert screen coordinates to canvas coordinates (undo scale)
constexpr int kRoomTileHeight
constexpr int kEntranceCount
constexpr int kSpriteGridMax
std::pair< int, int > RoomToCanvas(int room_x, int room_y)
Convert room tile coordinates to canvas pixel coordinates.
bool IsWithinBounds(int canvas_x, int canvas_y, int margin=0)
Check if coordinates are within room bounds.
constexpr int kSpriteTileSize
uint16_t CalculateCameraY(int room_id, int local_pixel_y)
Calculate absolute camera Y coordinate from room and local position.
std::pair< int, int > RoomIdToGridPosition(int room_id)
Get the grid position (column, row) for a room ID.
constexpr int kRoomTileWidth
constexpr int kRoomPixelHeight
constexpr uint16_t kCameraBaseOffset
CameraToLocalResult CameraToLocalCoords(uint16_t camera_x, uint16_t camera_y)
std::pair< uint16_t, uint16_t > SpriteToCameraCoords(int room_id, int sprite_x, int sprite_y)
Calculate sprite-format coordinates (16-pixel units)
constexpr int kRoomPixelWidth
std::pair< int, int > CanvasToRoom(int canvas_x, int canvas_y)
Convert canvas pixel coordinates to room tile coordinates.
std::pair< int, int > ClampToRoom(int room_x, int room_y)
Clamp room tile coordinates to valid range.
Convert camera coordinates back to room ID and local position.