From 6d97601d6fc7552b35e41aa4a007a1ed65019102 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Thu, 13 Feb 2020 20:27:13 +0100 Subject: [PATCH] Replace hardcoded occurrences of maximum map size (#10696) --- src/openrct2/actions/LargeSceneryPlaceAction.hpp | 2 +- src/openrct2/peep/Guest.cpp | 5 +++-- src/openrct2/peep/Staff.cpp | 8 ++++---- src/openrct2/ride/Vehicle.cpp | 2 +- src/openrct2/world/Sprite.cpp | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.hpp b/src/openrct2/actions/LargeSceneryPlaceAction.hpp index d5158a40ee..0aac370e22 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.hpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.hpp @@ -356,7 +356,7 @@ private: curTile.x += _loc.x; curTile.y += _loc.y; - if (curTile.x >= 0x1FFF || curTile.y >= 0x1FFF || curTile.x < 0 || curTile.y < 0) + if (!map_is_location_valid(curTile)) { continue; } diff --git a/src/openrct2/peep/Guest.cpp b/src/openrct2/peep/Guest.cpp index 3d379a9999..a5392ef2f2 100644 --- a/src/openrct2/peep/Guest.cpp +++ b/src/openrct2/peep/Guest.cpp @@ -6877,9 +6877,10 @@ void Guest::UpdateSpriteType() if (climate_is_raining() && (item_standard_flags & PEEP_ITEM_UMBRELLA) && x != LOCATION_NULL) { - if ((x & 0xFFE0) < 0x1FFF && (y & 0xFFE0) < 0x1FFF) + CoordsXY loc = { x, y }; + if (map_is_location_valid(loc.ToTileStart())) { - TileElement* tileElement = map_get_first_element_at({ x, y }); + TileElement* tileElement = map_get_first_element_at(loc); while (true) { if (tileElement == nullptr) diff --git a/src/openrct2/peep/Staff.cpp b/src/openrct2/peep/Staff.cpp index 26aa18a758..407cee2bed 100644 --- a/src/openrct2/peep/Staff.cpp +++ b/src/openrct2/peep/Staff.cpp @@ -563,7 +563,7 @@ static uint8_t staff_handyman_direction_to_uncut_grass(Peep* peep, uint8_t valid CoordsXY chosenTile = CoordsXY{ peep->NextLoc } + CoordsDirectionDelta[chosenDirection]; - if (chosenTile.x > 0x1FFF || chosenTile.y > 0x1FFF) + if (!map_is_location_valid(chosenTile)) continue; auto surfaceElement = map_get_surface_element_at(chosenTile); @@ -684,7 +684,7 @@ static bool staff_path_finding_handyman(Peep* peep) CoordsXY chosenTile = CoordsXY{ peep->NextLoc } + CoordsDirectionDelta[direction]; - while (chosenTile.x > 0x1FFF || chosenTile.y > 0x1FFF) + while (!map_is_location_valid(chosenTile)) { direction = staff_handyman_direction_rand_surface(peep, validDirections); chosenTile = CoordsXY{ peep->NextLoc } + CoordsDirectionDelta[direction]; @@ -918,7 +918,7 @@ static bool staff_path_finding_mechanic(Peep* peep) CoordsXY chosenTile = CoordsXY{ peep->NextLoc } + CoordsDirectionDelta[direction]; - while (chosenTile.x > 0x1FFF || chosenTile.y > 0x1FFF) + while (!map_is_location_valid(chosenTile)) { direction = staff_mechanic_direction_surface(peep); chosenTile = CoordsXY{ peep->NextLoc } + CoordsDirectionDelta[direction]; @@ -1001,7 +1001,7 @@ static bool staff_path_finding_misc(Peep* peep) CoordsXY chosenTile = CoordsXY{ peep->NextLoc } + CoordsDirectionDelta[direction]; - while (chosenTile.x > 0x1FFF || chosenTile.y > 0x1FFF) + while (!map_is_location_valid(chosenTile)) { direction = staff_direction_surface(peep, scenario_rand() & 3); chosenTile = CoordsXY{ peep->NextLoc } + CoordsDirectionDelta[direction]; diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index 8be6172a5f..b1e5662768 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -5444,7 +5444,7 @@ static void vehicle_update_crash(Vehicle* vehicle) curVehicle->track_y = (int16_t)(curVehicle->crash_y << 8); curVehicle->track_z = (int16_t)(curVehicle->crash_z << 8); - if (curPosition.x > 0x1FFF || curPosition.y > 0x1FFF) + if (!map_is_location_valid(curPosition)) { vehicle_crash_on_land(curVehicle); continue; diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index c1428f98d0..1e54f68640 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -626,7 +626,7 @@ void sprite_misc_update_all() */ void sprite_move(int16_t x, int16_t y, int16_t z, SpriteBase* sprite) { - if (x < 0 || y < 0 || x > 0x1FFF || y > 0x1FFF) + if (!map_is_location_valid({ x, y })) { x = LOCATION_NULL; }