From 77503fee97360f33e8f723910dcfee7f6530952c Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Mon, 23 Dec 2019 09:12:44 -0300 Subject: [PATCH] Make Map::map_get_track_element_at_of_type() use CoordsXYZ --- src/openrct2/actions/TrackSetBrakeSpeedAction.hpp | 2 +- src/openrct2/ride/Vehicle.cpp | 4 ++-- src/openrct2/world/Map.cpp | 7 ++++--- src/openrct2/world/Map.h | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp b/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp index e1d671099c..0c314b95a3 100644 --- a/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp +++ b/src/openrct2/actions/TrackSetBrakeSpeedAction.hpp @@ -59,7 +59,7 @@ private: res->Position.y += 16; res->ExpenditureType = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION; - TileElement* tileElement = map_get_track_element_at_of_type(_loc.x, _loc.y, _loc.z / 8, _trackType); + TileElement* tileElement = map_get_track_element_at_of_type(_loc, _trackType); if (tileElement == nullptr) { log_warning("Invalid game command for setting brakes speed. x = %d, y = %d", _loc.x, _loc.y); diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 5dee3b3011..c0f813f57e 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -3099,7 +3099,7 @@ void vehicle_test_reset(rct_vehicle* vehicle) static bool vehicle_current_tower_element_is_top(rct_vehicle* vehicle) { TileElement* tileElement = map_get_track_element_at_of_type( - vehicle->track_x, vehicle->track_y, vehicle->track_z / 8, vehicle->track_type >> 2); + { vehicle->track_x, vehicle->track_y, vehicle->track_z }, vehicle->track_type >> 2); if (tileElement != nullptr) { while (!tileElement->IsLastForTile()) @@ -6630,7 +6630,7 @@ static void check_and_apply_block_section_stop_site(rct_vehicle* vehicle) int32_t trackType = vehicle->track_type >> 2; TileElement* trackElement = map_get_track_element_at_of_type( - vehicle->track_x, vehicle->track_y, vehicle->track_z >> 3, trackType); + { vehicle->track_x, vehicle->track_y, vehicle->track_z }, trackType); if (trackElement == nullptr) { diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index 64329f3580..26961e17c3 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -2155,16 +2155,17 @@ TrackElement* map_get_track_element_at(const CoordsXYZ& trackPos) * @param y y units, not tiles. * @param z Base height. */ -TileElement* map_get_track_element_at_of_type(int32_t x, int32_t y, int32_t z, int32_t trackType) +TileElement* map_get_track_element_at_of_type(const CoordsXYZ& trackPos, int32_t trackType) { - TileElement* tileElement = map_get_first_element_at({ x, y }); + TileElement* tileElement = map_get_first_element_at(trackPos); if (tileElement == nullptr) return nullptr; + auto trackTilePos = TileCoordsXYZ{ trackPos }; do { if (tileElement->GetType() != TILE_ELEMENT_TYPE_TRACK) continue; - if (tileElement->base_height != z) + if (tileElement->base_height != trackTilePos.z) continue; if (tileElement->AsTrack()->GetTrackType() != trackType) continue; diff --git a/src/openrct2/world/Map.h b/src/openrct2/world/Map.h index c566ae0cca..b12b3b030e 100644 --- a/src/openrct2/world/Map.h +++ b/src/openrct2/world/Map.h @@ -230,7 +230,7 @@ bool map_large_scenery_get_origin( ScreenCoordsXY translate_3d_to_2d_with_z(int32_t rotation, const CoordsXYZ& pos); TrackElement* map_get_track_element_at(const CoordsXYZ& trackPos); -TileElement* map_get_track_element_at_of_type(int32_t x, int32_t y, int32_t z, int32_t trackType); +TileElement* map_get_track_element_at_of_type(const CoordsXYZ& trackPos, int32_t trackType); TileElement* map_get_track_element_at_of_type_seq(int32_t x, int32_t y, int32_t z, int32_t trackType, int32_t sequence); TrackElement* map_get_track_element_at_of_type(CoordsXYZD location, int32_t trackType); TrackElement* map_get_track_element_at_of_type_seq(CoordsXYZD location, int32_t trackType, int32_t sequence);