Wrote up some details on moon locations, which use a different method of navigation (coordinate and distance-based). Requires some special handling of boundaries and pathfinding (e.g. you can’t walk up a cliff).
Something like:
LunarLocale { int x, // Canonical X coordinate int y, // Canonical Y coordinate rect bounds, // Rectangle defining the bounds (size) of the locale bool blocksMovement, // Whether the bounds block movement through it int visibleRange, // How far away the locale is bool fastTravelAllowed, // Whether the player can fast travel to the location bool discovered, // Whether the player has discovered the location }