From c8097eab3a31ad3c5f0c245ccc1066aba548e2a9 Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Mon, 13 Jan 2020 21:48:12 -0300 Subject: [PATCH] Use CoordsXYE on maze_entrance_hedge_removal() --- .../actions/RideEntranceExitPlaceAction.hpp | 2 +- src/openrct2/ride/Ride.cpp | 8 +++----- src/openrct2/world/Entrance.cpp | 15 +++++++-------- src/openrct2/world/Entrance.h | 2 +- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/openrct2/actions/RideEntranceExitPlaceAction.hpp b/src/openrct2/actions/RideEntranceExitPlaceAction.hpp index f24cca4dc0..1dffab2496 100644 --- a/src/openrct2/actions/RideEntranceExitPlaceAction.hpp +++ b/src/openrct2/actions/RideEntranceExitPlaceAction.hpp @@ -221,7 +221,7 @@ public: if (!(GetFlags() & GAME_COMMAND_FLAG_GHOST)) { - maze_entrance_hedge_removal(_loc.x, _loc.y, tileElement); + maze_entrance_hedge_removal({ _loc, tileElement }); } footpath_connect_edges(_loc, tileElement, GetFlags()); diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 41fa100f82..33807af8d1 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -4271,9 +4271,7 @@ static void ride_set_maze_entrance_exit_points(Ride* ride) // Enumerate entrance and exit positions for (position = positions; !(*position).isNull(); position++) { - int32_t x = (*position).x << 5; - int32_t y = (*position).y << 5; - int32_t z = (*position).z; + auto entranceExitMapPos = position->ToCoordsXYZ(); TileElement* tileElement = map_get_first_element_at(position->ToCoordsXY()); do @@ -4287,10 +4285,10 @@ static void ride_set_maze_entrance_exit_points(Ride* ride) { continue; } - if (tileElement->base_height != z) + if (tileElement->GetBaseZ() != entranceExitMapPos.z) continue; - maze_entrance_hedge_removal(x, y, tileElement); + maze_entrance_hedge_removal({ entranceExitMapPos, tileElement }); } while (!(tileElement++)->IsLastForTile()); } } diff --git a/src/openrct2/world/Entrance.cpp b/src/openrct2/world/Entrance.cpp index 0a650286e3..23161dc538 100644 --- a/src/openrct2/world/Entrance.cpp +++ b/src/openrct2/world/Entrance.cpp @@ -165,15 +165,14 @@ void maze_entrance_hedge_replacement(const CoordsXYE& entrance) * Removes the hedge walls for an entrance placement. * rct2: 0x00666CBE */ -void maze_entrance_hedge_removal(int32_t x, int32_t y, TileElement* tileElement) +void maze_entrance_hedge_removal(const CoordsXYE& entrance) { - int32_t direction = tileElement->GetDirection(); - x += CoordsDirectionDelta[direction].x; - y += CoordsDirectionDelta[direction].y; - int32_t z = tileElement->GetBaseZ(); - ride_id_t rideIndex = tileElement->AsEntrance()->GetRideIndex(); + int32_t direction = entrance.element->GetDirection(); + auto hedgePos = entrance + CoordsDirectionDelta[direction]; + int32_t z = entrance.element->GetBaseZ(); + ride_id_t rideIndex = entrance.element->AsEntrance()->GetRideIndex(); - tileElement = map_get_first_element_at({ x, y }); + auto tileElement = map_get_first_element_at(hedgePos); if (tileElement == nullptr) return; do @@ -200,7 +199,7 @@ void maze_entrance_hedge_removal(int32_t x, int32_t y, TileElement* tileElement) // Remove the bottom hedge section tileElement->AsTrack()->MazeEntrySubtract(1 << ((mazeSection + 15) & 0x0F)); - map_invalidate_tile({ x, y, tileElement->GetBaseZ(), tileElement->GetClearanceZ() }); + map_invalidate_tile({ hedgePos, tileElement->GetBaseZ(), tileElement->GetClearanceZ() }); return; } while (!(tileElement++)->IsLastForTile()); } diff --git a/src/openrct2/world/Entrance.h b/src/openrct2/world/Entrance.h index 25dbe90c18..1e1dc829f1 100644 --- a/src/openrct2/world/Entrance.h +++ b/src/openrct2/world/Entrance.h @@ -46,7 +46,7 @@ money32 park_entrance_place_ghost(CoordsXYZD entranceLoc); void reset_park_entrance(); void maze_entrance_hedge_replacement(const CoordsXYE& entrance); -void maze_entrance_hedge_removal(int32_t x, int32_t y, TileElement* tileElement); +void maze_entrance_hedge_removal(const CoordsXYE& entrance); void fix_park_entrance_locations();