Make Map::map_get_track_element_at_of_type() use CoordsXYZ

This commit is contained in:
Tulio Leao 2019-12-23 09:12:44 -03:00
parent 6c998d7b4d
commit 77503fee97
4 changed files with 8 additions and 7 deletions

View File

@ -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);

View File

@ -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)
{

View File

@ -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;

View File

@ -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);