diff --git a/distribution/changelog.txt b/distribution/changelog.txt index acc3c23115..339ab10294 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,7 +1,7 @@ 0.4.8 (in development) ------------------------------------------------------------------------ - Feature: [#21062] [Plugin] Add API for managing a guest's items. -- Improved: [#18632] Land ownership and construction rights are now shown on top of the water. +- Improved: [#18632, #21306] Land ownership and construction rights are now shown on top of the water. - Improved: [#20951] Activate OpenRCT2 window after using native file dialog on macOS. - Improved: [#21184] The construction marker for rides, paths and large scenery is now shown on top of the water. - Improved: [#21227] Entrance style dropdown is now sorted alphabetically everywhere. diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index a6d2d3027a..ab3ca10360 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -430,12 +430,16 @@ public: { MapInvalidateSelectionRect(); gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE; - auto mapCoords = ScreenGetMapXY(screenCoords, nullptr); - if (!mapCoords.has_value()) + + auto info = GetMapCoordinatesFromPos( + screenCoords, EnumsToFlags(ViewportInteractionItem::Terrain, ViewportInteractionItem::Water)); + if (info.SpriteType == ViewportInteractionItem::None) return; + auto mapCoords = info.Loc; + gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE; - gMapSelectType = MAP_SELECT_TYPE_FULL; + gMapSelectType = MAP_SELECT_TYPE_FULL_LAND_RIGHTS; int32_t landRightsToolSize = _landRightsToolSize; if (landRightsToolSize == 0) @@ -443,11 +447,12 @@ public: int32_t size = (landRightsToolSize * 32) - 32; int32_t radius = (landRightsToolSize * 16) - 16; - mapCoords->x = (mapCoords->x - radius) & 0xFFE0; - mapCoords->y = (mapCoords->y - radius) & 0xFFE0; - gMapSelectPositionA = *mapCoords; - gMapSelectPositionB.x = mapCoords->x + size; - gMapSelectPositionB.y = mapCoords->y + size; + mapCoords.x -= radius; + mapCoords.y -= radius; + mapCoords = mapCoords.ToTileStart(); + gMapSelectPositionA = mapCoords; + gMapSelectPositionB.x = mapCoords.x + size; + gMapSelectPositionB.y = mapCoords.y + size; MapInvalidateSelectionRect(); } @@ -687,7 +692,7 @@ public: MapInvalidateSelectionRect(); gMapSelectFlags |= MAP_SELECT_FLAG_ENABLE; - gMapSelectType = MAP_SELECT_TYPE_FULL; + gMapSelectType = MAP_SELECT_TYPE_FULL_LAND_RIGHTS; gMapSelectPositionA = mapCoords; gMapSelectPositionB = mapCoords + CoordsXY{ size, size }; MapInvalidateSelectionRect();