diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 732838c457..61e338ba41 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2970,11 +2970,9 @@ private: ride->stations[0].Entrance = entranceCoords; ride->stations[0].Exit = exitCoords; - auto entranceElement = map_get_ride_exit_element_at( - { entranceCoords.x << 5, entranceCoords.y << 5, entranceCoords.z << 3 }, false); + auto entranceElement = map_get_ride_exit_element_at(entranceCoords.ToCoordsXYZD(), false); entranceElement->SetEntranceType(ENTRANCE_TYPE_RIDE_ENTRANCE); - auto exitElement = map_get_ride_entrance_element_at( - { exitCoords.x << 5, exitCoords.y << 5, exitCoords.z << 3 }, false); + auto exitElement = map_get_ride_entrance_element_at(exitCoords.ToCoordsXYZD(), false); exitElement->SetEntranceType(ENTRANCE_TYPE_RIDE_EXIT); // Trigger footpath update diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index 5770fbca2f..ba2688e7d5 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -7677,8 +7677,7 @@ void determine_ride_entrance_and_exit_locations() // Skip if the station has no entrance if (!entranceLoc.isNull()) { - const EntranceElement* entranceElement = map_get_ride_entrance_element_at( - { entranceLoc.x << 5, entranceLoc.y << 5, entranceLoc.z << 3 }, false); + const EntranceElement* entranceElement = map_get_ride_entrance_element_at(entranceLoc.ToCoordsXYZD(), false); if (entranceElement == nullptr || entranceElement->GetRideIndex() != ride.id || entranceElement->GetStationIndex() != stationIndex) @@ -7693,8 +7692,7 @@ void determine_ride_entrance_and_exit_locations() if (!exitLoc.isNull()) { - const EntranceElement* entranceElement = map_get_ride_exit_element_at( - { exitLoc.x << 5, exitLoc.y << 5, exitLoc.z << 3 }, false); + const EntranceElement* entranceElement = map_get_ride_exit_element_at(exitLoc.ToCoordsXYZD(), false); if (entranceElement == nullptr || entranceElement->GetRideIndex() != ride.id || entranceElement->GetStationIndex() != stationIndex) diff --git a/src/openrct2/world/Location.hpp b/src/openrct2/world/Location.hpp index fc02a12663..098ba1ed7b 100644 --- a/src/openrct2/world/Location.hpp +++ b/src/openrct2/world/Location.hpp @@ -384,6 +384,11 @@ struct TileCoordsXYZD { return x == COORDS_NULL; }; + + CoordsXYZD ToCoordsXYZD() const + { + return { x * 32, y * 32, z * 8, direction }; + } }; /** diff --git a/test/tests/TileElements.cpp b/test/tests/TileElements.cpp index 6c37c09c10..c4e6285a2e 100644 --- a/test/tests/TileElements.cpp +++ b/test/tests/TileElements.cpp @@ -94,7 +94,8 @@ TEST_F(TileElementWantsFootpathConnection, Stall) TEST_F(TileElementWantsFootpathConnection, RideEntrance) { // Ride entrances and exits want a connection in one direction - const EntranceElement* const entranceElement = map_get_ride_entrance_element_at({ 18 << 5, 8 << 5, 14 << 3 }, false); + const EntranceElement* const entranceElement = map_get_ride_entrance_element_at( + TileCoordsXYZ{ 18, 8, 14 }.ToCoordsXYZ(), false); ASSERT_NE(entranceElement, nullptr); EXPECT_TRUE(tile_element_wants_path_connection_towards({ 18, 8, 14, 0 }, nullptr)); EXPECT_FALSE(tile_element_wants_path_connection_towards({ 18, 8, 14, 1 }, nullptr)); @@ -106,7 +107,7 @@ TEST_F(TileElementWantsFootpathConnection, RideEntrance) TEST_F(TileElementWantsFootpathConnection, RideExit) { // The exit has been rotated; it wants a path connection in direction 1, but not 0 like the entrance - const EntranceElement* const exitElement = map_get_ride_exit_element_at({ 18 << 5, 10 << 5, 14 << 3 }, false); + const EntranceElement* const exitElement = map_get_ride_exit_element_at(TileCoordsXYZ{ 18, 10, 14 }.ToCoordsXYZ(), false); ASSERT_NE(exitElement, nullptr); EXPECT_FALSE(tile_element_wants_path_connection_towards({ 18, 10, 14, 0 }, nullptr)); EXPECT_TRUE(tile_element_wants_path_connection_towards({ 18, 10, 14, 1 }, nullptr));