diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj
index df292a4b0e67..ede1fb4ac3b0 100644
--- a/src/openrct2/libopenrct2.vcxproj
+++ b/src/openrct2/libopenrct2.vcxproj
@@ -339,7 +339,7 @@
-
+
@@ -843,7 +843,7 @@
-
+
diff --git a/src/openrct2/object/LargeSceneryObject.cpp b/src/openrct2/object/LargeSceneryObject.cpp
index b89c949e6ca6..947842689a03 100644
--- a/src/openrct2/object/LargeSceneryObject.cpp
+++ b/src/openrct2/object/LargeSceneryObject.cpp
@@ -19,28 +19,28 @@
#include "../localisation/Language.h"
#include "../world/Banner.h"
#include "../world/Location.hpp"
-#include "SceneryBoundingBox.h"
+#include "SceneryBoundbox.h"
#include
#include
-static DefaultBoundingBoxType boundBoxTypes[16] = {
- DefaultBoundingBoxType::FullTileBox, // 0000
- DefaultBoundingBoxType::FullTileSouthQuadrantBox, // 0001
- DefaultBoundingBoxType::FullTileWestQuadrantBox, // 0010
- DefaultBoundingBoxType::FullTileSouthwestSideBox, // 0011
- DefaultBoundingBoxType::FullTileNorthQuadrantBox, // 0100
- DefaultBoundingBoxType::FullTileBox, // 0101 (diagonal of South and North corners)
- DefaultBoundingBoxType::FullTileNorthwestSideBox, // 0110
- DefaultBoundingBoxType::FullTileBox, // 0111 (triangle of South, West, and North corners)
- DefaultBoundingBoxType::FullTileEastQuadrantBox, // 1000
- DefaultBoundingBoxType::FullTileSoutheastSideBox, // 1001
- DefaultBoundingBoxType::FullTileBox, // 1010 (diagonal of East and West corners)
- DefaultBoundingBoxType::FullTileBox, // 1011 (triangle of South, West, and East corners)
- DefaultBoundingBoxType::FullTileNortheastSideBox, // 1100
- DefaultBoundingBoxType::FullTileBox, // 1101 (triangle of South, West, and North corners)
- DefaultBoundingBoxType::FullTileBox, // 1110 (triangle of West, North, and East corners)
- DefaultBoundingBoxType::FullTileBox, // 1111
+static DefaultBoundBoxType boundBoxTypes[16] = {
+ DefaultBoundBoxType::FullTileBox, // 0000
+ DefaultBoundBoxType::FullTileSouthQuadrantBox, // 0001
+ DefaultBoundBoxType::FullTileWestQuadrantBox, // 0010
+ DefaultBoundBoxType::FullTileSouthwestSideBox, // 0011
+ DefaultBoundBoxType::FullTileNorthQuadrantBox, // 0100
+ DefaultBoundBoxType::FullTileBox, // 0101 (diagonal of South and North corners)
+ DefaultBoundBoxType::FullTileNorthwestSideBox, // 0110
+ DefaultBoundBoxType::FullTileBox, // 0111 (triangle of South, West, and North corners)
+ DefaultBoundBoxType::FullTileEastQuadrantBox, // 1000
+ DefaultBoundBoxType::FullTileSoutheastSideBox, // 1001
+ DefaultBoundBoxType::FullTileBox, // 1010 (diagonal of East and West corners)
+ DefaultBoundBoxType::FullTileBox, // 1011 (triangle of South, West, and East corners)
+ DefaultBoundBoxType::FullTileNortheastSideBox, // 1100
+ DefaultBoundBoxType::FullTileBox, // 1101 (triangle of South, West, and North corners)
+ DefaultBoundBoxType::FullTileBox, // 1110 (triangle of West, North, and East corners)
+ DefaultBoundBoxType::FullTileBox, // 1111
};
static int32_t getBoundBoxHeight(uint8_t clearanceHeight)
@@ -56,7 +56,7 @@ static void SetTileBoundingBox(LargeSceneryTile& tile)
}
else
{
- tile.boundBoxes = GetDefaultSceneryBoundBoxes(DefaultBoundingBoxType::FullTileLargeBox);
+ tile.boundBoxes = GetDefaultSceneryBoundBoxes(DefaultBoundBoxType::FullTileLargeBox);
}
tile.spriteOffset = GetDefaultSpriteOffset(DefaultSpriteOffsetType::LargeSceneryOffset);
diff --git a/src/openrct2/object/SceneryBoundingBox.cpp b/src/openrct2/object/SceneryBoundbox.cpp
similarity index 82%
rename from src/openrct2/object/SceneryBoundingBox.cpp
rename to src/openrct2/object/SceneryBoundbox.cpp
index 5c8ade07b480..f3e214497d17 100644
--- a/src/openrct2/object/SceneryBoundingBox.cpp
+++ b/src/openrct2/object/SceneryBoundbox.cpp
@@ -7,7 +7,7 @@
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
-#include "SceneryBoundingBox.h"
+#include "SceneryBoundbox.h"
static constexpr std::array DefaultSpriteOffsets = {
CoordsXYZ(7, 7, 0), // quarter tile
@@ -105,7 +105,7 @@ static constexpr SceneryBoundBoxes FullTileThin = {
BoundBoxXYZ({ 15, 15, 0 }, { 2, 2, 0 }),
};
-static constexpr std::array boundBoxes = {
+static constexpr std::array boundBoxes = {
QuarterTile,
HalfTile,
FullTileNorthQuadrant,
@@ -123,32 +123,32 @@ static constexpr std::array
#pragma endregion
-static const EnumMap BBoxTypeLookup = {
- { "quarterTile", DefaultBoundingBoxType::QuarterTileBox },
- { "halfTile", DefaultBoundingBoxType::HalfTileBox },
- { "cornerNorth", DefaultBoundingBoxType::FullTileNorthQuadrantBox },
- { "sideNortheast", DefaultBoundingBoxType::FullTileNortheastSideBox },
- { "cornerEast", DefaultBoundingBoxType::FullTileEastQuadrantBox },
- { "sideSoutheast", DefaultBoundingBoxType::FullTileSoutheastSideBox },
- { "cornerSouth", DefaultBoundingBoxType::FullTileSouthQuadrantBox },
- { "sideSouthwest", DefaultBoundingBoxType::FullTileSouthwestSideBox },
- { "cornerEast", DefaultBoundingBoxType::FullTileWestQuadrantBox },
- { "sideNorthwest", DefaultBoundingBoxType::FullTileNorthwestSideBox },
- { "fullTile", DefaultBoundingBoxType::FullTileBox },
- { "fullTileLarge", DefaultBoundingBoxType::FullTileLargeBox },
- { "fullTileThin", DefaultBoundingBoxType::FullTileThinBox }
+static const EnumMap BoundboxTypeLookup = {
+ { "quarterTile", DefaultBoundBoxType::QuarterTileBox },
+ { "halfTile", DefaultBoundBoxType::HalfTileBox },
+ { "cornerNorth", DefaultBoundBoxType::FullTileNorthQuadrantBox },
+ { "sideNortheast", DefaultBoundBoxType::FullTileNortheastSideBox },
+ { "cornerEast", DefaultBoundBoxType::FullTileEastQuadrantBox },
+ { "sideSoutheast", DefaultBoundBoxType::FullTileSoutheastSideBox },
+ { "cornerSouth", DefaultBoundBoxType::FullTileSouthQuadrantBox },
+ { "sideSouthwest", DefaultBoundBoxType::FullTileSouthwestSideBox },
+ { "cornerEast", DefaultBoundBoxType::FullTileWestQuadrantBox },
+ { "sideNorthwest", DefaultBoundBoxType::FullTileNorthwestSideBox },
+ { "fullTile", DefaultBoundBoxType::FullTileBox },
+ { "fullTileLarge", DefaultBoundBoxType::FullTileLargeBox },
+ { "fullTileThin", DefaultBoundBoxType::FullTileThinBox }
};
-static DefaultBoundingBoxType GetBoundingBoxTypeFromString(const std::string& s)
+static DefaultBoundBoxType GetBoundingBoxTypeFromString(const std::string& s)
{
- auto result = BBoxTypeLookup.find(s);
- return (result != BBoxTypeLookup.end()) ? result->second : DefaultBoundingBoxType::FullTileBox;
+ auto result = BoundboxTypeLookup.find(s);
+ return (result != BoundboxTypeLookup.end()) ? result->second : DefaultBoundBoxType::FullTileBox;
}
-SceneryBoundBoxes GetDefaultSceneryBoundBoxes(DefaultBoundingBoxType type)
+SceneryBoundBoxes GetDefaultSceneryBoundBoxes(DefaultBoundBoxType type)
{
- if (type >= DefaultBoundingBoxType::CountBox)
- return boundBoxes[DefaultBoundingBoxType::FullTileBox];
+ if (type >= DefaultBoundBoxType::CountBox)
+ return boundBoxes[DefaultBoundBoxType::FullTileBox];
return boundBoxes[type];
}
@@ -199,14 +199,10 @@ SceneryBoundBoxes ReadBoundBoxes(json_t& jBBox, int32_t defaultHeight, bool full
else if (jBBox.is_object())
{
// single box, rotated around (16, 16) if fulltile or (8,8) if quarter tile
- CoordsXY rotationCenter = { 8, 8 };
- if (fullTile)
- {
- rotationCenter = { 16, 16 };
- }
- auto bBox = ReadBoundBox(jBBox);
- boxes[0] = bBox;
- boxes[1] = RotateBoundBox(bBox, rotationCenter);
+ CoordsXY rotationCenter = fullTile ? CoordsXY(16, 16) : CoordsXY(8, 8);
+ auto boundBox = ReadBoundBox(jBBox);
+ boxes[0] = boundBox;
+ boxes[1] = RotateBoundBox(boundBox, rotationCenter);
boxes[2] = RotateBoundBox(boxes[1], rotationCenter);
boxes[3] = RotateBoundBox(boxes[2], rotationCenter);
}
@@ -215,7 +211,7 @@ SceneryBoundBoxes ReadBoundBoxes(json_t& jBBox, int32_t defaultHeight, bool full
Guard::Assert(
jBBox.is_string(),
"boundBox must be an array of four boundBox objects, a single boundBox object, or a string matching the "
- "DefaultBoundingBoxType enum.");
+ "DefaultBoundBoxType enum.");
boxes = GetDefaultSceneryBoundBoxes(GetBoundingBoxTypeFromString(Json::GetString(jBBox)));
for (uint8_t i = 0; i < NumOrthogonalDirections; i++)
boxes[i].length.z = defaultHeight;
diff --git a/src/openrct2/object/SceneryBoundingBox.h b/src/openrct2/object/SceneryBoundbox.h
similarity index 82%
rename from src/openrct2/object/SceneryBoundingBox.h
rename to src/openrct2/object/SceneryBoundbox.h
index 92aac01280dd..ed80b061c9e9 100644
--- a/src/openrct2/object/SceneryBoundingBox.h
+++ b/src/openrct2/object/SceneryBoundbox.h
@@ -15,12 +15,13 @@
#include "../paint/Boundbox.h"
#include "../world/Scenery.h"
-enum DefaultBoundingBoxType : uint8_t
+enum DefaultBoundBoxType : uint8_t
{
QuarterTileBox,
HalfTileBox,
FullTileNorthQuadrantBox,
- FullTileNortheastSideBox,
+ FullTileNortheastSideBox, // FullTileNortheastSide is not the same as HalfTile, as some BoundBoxes have different offsets
+ // and sizes
FullTileEastQuadrantBox,
FullTileSoutheastSideBox,
FullTileSouthQuadrantBox,
@@ -43,7 +44,7 @@ enum DefaultSpriteOffsetType : uint8_t
CountOffset
};
-SceneryBoundBoxes GetDefaultSceneryBoundBoxes(DefaultBoundingBoxType type);
+SceneryBoundBoxes GetDefaultSceneryBoundBoxes(DefaultBoundBoxType type);
SceneryBoundBoxes ReadBoundBoxes(json_t& jBBox, int32_t defaultHeight, bool fullTile);
CoordsXYZ GetDefaultSpriteOffset(DefaultSpriteOffsetType type);
CoordsXYZ ReadSpriteOffset(json_t& jCoords);
diff --git a/src/openrct2/object/SmallSceneryObject.cpp b/src/openrct2/object/SmallSceneryObject.cpp
index 18f1bef2874b..7ac8da1ea894 100644
--- a/src/openrct2/object/SmallSceneryObject.cpp
+++ b/src/openrct2/object/SmallSceneryObject.cpp
@@ -19,7 +19,7 @@
#include "../interface/Cursors.h"
#include "../localisation/Language.h"
#include "../world/Scenery.h"
-#include "SceneryBoundingBox.h"
+#include "SceneryBoundbox.h"
#include
@@ -297,26 +297,26 @@ static int32_t getBoundBoxHeight(uint8_t clearanceHeight)
void SmallSceneryObject::SetBoundingBoxFromFlags()
{
- DefaultBoundingBoxType boundBoxType = DefaultBoundingBoxType::QuarterTileBox;
+ DefaultBoundBoxType boundBoxType = DefaultBoundBoxType::QuarterTileBox;
DefaultSpriteOffsetType spriteOffsetType = DefaultSpriteOffsetType::QuarterTileOffset;
if (_legacyType.HasFlag(SMALL_SCENERY_FLAG_FULL_TILE))
{
- boundBoxType = DefaultBoundingBoxType::FullTileThinBox;
+ boundBoxType = DefaultBoundBoxType::FullTileThinBox;
spriteOffsetType = DefaultSpriteOffsetType::FullTileThinOffset;
if (_legacyType.HasFlag(SMALL_SCENERY_FLAG_HALF_SPACE))
{
spriteOffsetType = DefaultSpriteOffsetType::FullTileOffset;
- boundBoxType = DefaultBoundingBoxType::HalfTileBox;
+ boundBoxType = DefaultBoundBoxType::HalfTileBox;
}
else
{
if (_legacyType.HasFlag(SMALL_SCENERY_FLAG_VOFFSET_CENTRE))
{
- boundBoxType = DefaultBoundingBoxType::FullTileBox;
+ boundBoxType = DefaultBoundBoxType::FullTileBox;
spriteOffsetType = DefaultSpriteOffsetType::FullTileOffset;
if (_legacyType.HasFlag(SMALL_SCENERY_FLAG_NO_WALLS))
{
- boundBoxType = DefaultBoundingBoxType::FullTileLargeBox;
+ boundBoxType = DefaultBoundBoxType::FullTileLargeBox;
spriteOffsetType = DefaultSpriteOffsetType::FullTileLargeOffset;
}
}