diff --git a/src/openrct2/object/Object.cpp b/src/openrct2/object/Object.cpp index 2f9c9f93e4..1c419bc1a9 100644 --- a/src/openrct2/object/Object.cpp +++ b/src/openrct2/object/Object.cpp @@ -215,25 +215,6 @@ void Object::SetAuthors(std::vector&& authors) _authors = std::move(authors); } -std::optional rct_object_entry::GetSceneryType() const -{ - switch (GetType()) - { - case ObjectType::SmallScenery: - return SCENERY_TYPE_SMALL; - case ObjectType::LargeScenery: - return SCENERY_TYPE_LARGE; - case ObjectType::Walls: - return SCENERY_TYPE_WALL; - case ObjectType::Banners: - return SCENERY_TYPE_BANNER; - case ObjectType::PathBits: - return SCENERY_TYPE_PATH_ITEM; - default: - return std::nullopt; - } -} - bool rct_object_entry::IsEmpty() const { uint64_t a, b; diff --git a/src/openrct2/object/Object.h b/src/openrct2/object/Object.h index 2a5504af14..be1374529c 100644 --- a/src/openrct2/object/Object.h +++ b/src/openrct2/object/Object.h @@ -119,8 +119,6 @@ struct rct_object_entry flags |= (static_cast(newType) & 0x0F); } - std::optional GetSceneryType() const; - ObjectSourceGame GetSourceGame() const { return static_cast((flags & 0xF0) >> 4); diff --git a/src/openrct2/object/SceneryGroupObject.cpp b/src/openrct2/object/SceneryGroupObject.cpp index 8823c0958e..7c026dfcdc 100644 --- a/src/openrct2/object/SceneryGroupObject.cpp +++ b/src/openrct2/object/SceneryGroupObject.cpp @@ -66,7 +66,7 @@ void SceneryGroupObject::DrawPreview(rct_drawpixelinfo* dpi, int32_t width, int3 gfx_draw_sprite(dpi, imageId, screenCoords - ScreenCoordsXY{ 15, 14 }, 0); } -static std::optional GetSceneryType(ObjectType type) +static std::optional GetSceneryType(const ObjectType type) { switch (type) { diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index 6d686cdfb4..4f1b5573b3 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -48,21 +48,18 @@ static void FreeEntity(EntityBase& entity); constexpr size_t GetSpatialIndexOffset(int32_t x, int32_t y) { - size_t index = SPATIAL_INDEX_LOCATION_NULL; - if (x != LOCATION_NULL) - { - x = std::clamp(x, 0, 0xFFFF); - y = std::clamp(y, 0, 0xFFFF); + if (x == LOCATION_NULL) + return SPATIAL_INDEX_LOCATION_NULL; - int16_t flooredX = floor2(x, 32); - uint8_t tileY = y >> 5; - index = (flooredX << 3) | tileY; - } + const auto tileX = std::clamp(x / COORDS_XY_STEP, 0, MAXIMUM_MAP_SIZE_TECHNICAL); + const auto tileY = std::clamp(y / COORDS_XY_STEP, 0, MAXIMUM_MAP_SIZE_TECHNICAL); + const auto index = tileX * MAXIMUM_MAP_SIZE_TECHNICAL + tileY; - if (index >= sizeof(gSpriteSpatialIndex)) + if (index >= std::size(gSpriteSpatialIndex)) { return SPATIAL_INDEX_LOCATION_NULL; } + return index; }