Coordinate conversion utilities for dungeon editing. More...
Classes | |
| struct | CameraToLocalResult |
| Convert camera coordinates back to room ID and local position. More... | |
Functions | |
| std::pair< int, int > | RoomToCanvas (int room_x, int room_y) |
| Convert room tile coordinates to canvas pixel coordinates. | |
| std::pair< int, int > | CanvasToRoom (int canvas_x, int canvas_y) |
| Convert canvas pixel coordinates to room tile coordinates. | |
| std::pair< int, int > | ScreenToCanvas (int screen_x, int screen_y, float scale) |
| Convert screen coordinates to canvas coordinates (undo scale) | |
| std::pair< int, int > | CanvasToScreen (int canvas_x, int canvas_y, float scale) |
| Convert canvas coordinates to screen coordinates (apply scale) | |
| bool | IsWithinBounds (int canvas_x, int canvas_y, int margin=0) |
| Check if coordinates are within room bounds. | |
| std::pair< int, int > | ClampToRoom (int room_x, int room_y) |
| Clamp room tile coordinates to valid range. | |
| bool | IsValidRoomId (int room_id) |
| Validate room ID is within valid range. | |
| std::pair< int, int > | RoomIdToGridPosition (int room_id) |
| Get the grid position (column, row) for a room ID. | |
| uint16_t | CalculateCameraX (int room_id, int local_pixel_x) |
| Calculate absolute camera X coordinate from room and local position. | |
| uint16_t | CalculateCameraY (int room_id, int local_pixel_y) |
| Calculate absolute camera Y coordinate from room and local position. | |
| std::pair< uint16_t, uint16_t > | TileToCameraCoords (int room_id, int tile_x, int tile_y) |
| Calculate camera coordinates from room and tile position. | |
| 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) | |
Variables | |
| constexpr int | kTileSize = 8 |
| constexpr int | kRoomTileWidth = 64 |
| constexpr int | kRoomTileHeight = 64 |
| constexpr int | kRoomPixelWidth = 512 |
| constexpr int | kRoomPixelHeight = 512 |
| constexpr int | kRoomCount = 0x128 |
| constexpr int | kEntranceCount = 0x8C |
| constexpr int | kSpriteTileSize = 16 |
| constexpr int | kSpriteGridMax = 31 |
| constexpr uint16_t | kCameraBaseOffset = 0x1000 |
| constexpr int | kDungeonGridWidth = 16 |
Coordinate conversion utilities for dungeon editing.
Dungeon coordinate systems:
Camera Coordinate System:
All conversion functions work with UNSCALED canvas coordinates. Canvas drawing functions apply scale internally.
|
inline |
Convert room tile coordinates to canvas pixel coordinates.
| room_x | Room X coordinate (0-63) |
| room_y | Room Y coordinate (0-63) |
Definition at line 54 of file dungeon_coordinates.h.
References kTileSize.
Referenced by yaze::editor::BaseEntityHandler::RoomToCanvas().
|
inline |
Convert canvas pixel coordinates to room tile coordinates.
| canvas_x | Canvas X coordinate (unscaled pixels) |
| canvas_y | Canvas Y coordinate (unscaled pixels) |
Definition at line 64 of file dungeon_coordinates.h.
References kTileSize.
Referenced by yaze::editor::BaseEntityHandler::CanvasToRoom().
|
inline |
Convert screen coordinates to canvas coordinates (undo scale)
| screen_x | Screen X position (scaled) |
| screen_y | Screen Y position (scaled) |
| scale | Current canvas scale factor |
Definition at line 75 of file dungeon_coordinates.h.
|
inline |
Convert canvas coordinates to screen coordinates (apply scale)
| canvas_x | Canvas X coordinate (unscaled) |
| canvas_y | Canvas Y coordinate (unscaled) |
| scale | Current canvas scale factor |
Definition at line 89 of file dungeon_coordinates.h.
|
inline |
Check if coordinates are within room bounds.
| canvas_x | Canvas X coordinate (unscaled pixels) |
| canvas_y | Canvas Y coordinate (unscaled pixels) |
| margin | Optional margin in pixels (default 0) |
Definition at line 101 of file dungeon_coordinates.h.
References kRoomPixelHeight, and kRoomPixelWidth.
Referenced by yaze::editor::BaseEntityHandler::IsWithinBounds().
|
inline |
Clamp room tile coordinates to valid range.
| room_x | Room X coordinate (will be clamped to 0-63) |
| room_y | Room Y coordinate (will be clamped to 0-63) |
Definition at line 113 of file dungeon_coordinates.h.
References kRoomTileHeight, and kRoomTileWidth.
|
inline |
Validate room ID is within valid range.
| room_id | Room ID to validate |
Definition at line 126 of file dungeon_coordinates.h.
References kRoomCount.
Referenced by yaze::editor::InteractionContext::GetCurrentRoom(), and yaze::editor::InteractionContext::GetCurrentRoomConst().
|
inline |
Get the grid position (column, row) for a room ID.
| room_id | Room ID (0-295) |
Definition at line 139 of file dungeon_coordinates.h.
References kDungeonGridWidth.
Referenced by CalculateCameraX(), and CalculateCameraY().
|
inline |
Calculate absolute camera X coordinate from room and local position.
This is the format used by sprites, minecart tracks, and other game entities that need absolute world positioning.
| room_id | Room ID (0-295) |
| local_pixel_x | Local X position within room (0-511 pixels) |
Definition at line 153 of file dungeon_coordinates.h.
References kCameraBaseOffset, kRoomPixelWidth, and RoomIdToGridPosition().
Referenced by SpriteToCameraCoords(), and TileToCameraCoords().

|
inline |
Calculate absolute camera Y coordinate from room and local position.
| room_id | Room ID (0-295) |
| local_pixel_y | Local Y position within room (0-511 pixels) |
Definition at line 165 of file dungeon_coordinates.h.
References kCameraBaseOffset, kRoomPixelWidth, and RoomIdToGridPosition().
Referenced by SpriteToCameraCoords(), and TileToCameraCoords().

|
inline |
Calculate camera coordinates from room and tile position.
Convenience function that converts tile coordinates to camera coordinates.
| room_id | Room ID (0-295) |
| tile_x | Tile X position within room (0-63) |
| tile_y | Tile Y position within room (0-63) |
Definition at line 180 of file dungeon_coordinates.h.
References CalculateCameraX(), CalculateCameraY(), and kTileSize.

|
inline |
Definition at line 204 of file dungeon_coordinates.h.
References kCameraBaseOffset, kDungeonGridWidth, kRoomPixelHeight, kRoomPixelWidth, and kTileSize.
|
inline |
Calculate sprite-format coordinates (16-pixel units)
Sprites use a different coordinate format with 16-pixel granularity.
| room_id | Room ID (0-295) |
| sprite_x | Sprite X position (0-31) |
| sprite_y | Sprite Y position (0-31) |
Definition at line 241 of file dungeon_coordinates.h.
References CalculateCameraX(), CalculateCameraY(), and kSpriteTileSize.

|
constexpr |
Definition at line 32 of file dungeon_coordinates.h.
Referenced by CameraToLocalCoords(), CanvasToRoom(), yaze::editor::ItemInteractionHandler::DrawGhostPreview(), yaze::editor::ItemInteractionHandler::DrawSelectionHighlight(), RoomToCanvas(), and TileToCameraCoords().
|
constexpr |
Definition at line 33 of file dungeon_coordinates.h.
Referenced by ClampToRoom().
|
constexpr |
Definition at line 34 of file dungeon_coordinates.h.
Referenced by ClampToRoom().
|
constexpr |
Definition at line 35 of file dungeon_coordinates.h.
Referenced by CalculateCameraX(), CalculateCameraY(), CameraToLocalCoords(), and IsWithinBounds().
|
constexpr |
Definition at line 36 of file dungeon_coordinates.h.
Referenced by CameraToLocalCoords(), and IsWithinBounds().
|
constexpr |
Definition at line 37 of file dungeon_coordinates.h.
Referenced by IsValidRoomId().
|
constexpr |
Definition at line 38 of file dungeon_coordinates.h.
|
constexpr |
Definition at line 41 of file dungeon_coordinates.h.
Referenced by yaze::editor::SpriteInteractionHandler::CanvasToSpriteCoords(), yaze::editor::SpriteInteractionHandler::DrawGhostPreview(), yaze::editor::SpriteInteractionHandler::DrawSelectionHighlight(), yaze::editor::SpriteInteractionHandler::GetEntityAtPosition(), and SpriteToCameraCoords().
|
constexpr |
Definition at line 42 of file dungeon_coordinates.h.
Referenced by yaze::editor::SpriteInteractionHandler::DrawSelectionHighlight(), yaze::editor::SpriteInteractionHandler::HandleRelease(), and yaze::editor::SpriteInteractionHandler::PlaceSpriteAtPosition().
|
constexpr |
Definition at line 45 of file dungeon_coordinates.h.
Referenced by CalculateCameraX(), CalculateCameraY(), and CameraToLocalCoords().
|
constexpr |
Definition at line 46 of file dungeon_coordinates.h.
Referenced by CameraToLocalCoords(), and RoomIdToGridPosition().