1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-02-02 11:45:13 +01:00

Large scenery tiles 2 (#22888)

* Use std::span for tiles

* Add an index helper parameter

* Use coordsxyz

* Split up corners and walls

* Use bools for the two flags

* Apply coding style

* Refer only to LargeSceneryObject where required

* Address comments
This commit is contained in:
Duncan
2024-10-16 22:35:29 +01:00
committed by GitHub
parent 8063c5caa7
commit f6582647f5
17 changed files with 151 additions and 212 deletions

View File

@@ -2161,18 +2161,17 @@ namespace OpenRCT2::Scripting
const auto* const largeEntry = largeScenery->GetEntry();
const auto direction = largeScenery->GetDirection();
const auto sequenceIndex = largeScenery->GetSequenceIndex();
const auto* tiles = largeEntry->tiles;
const auto& tile = tiles[sequenceIndex];
const auto& tiles = largeEntry->tiles;
const auto& initialTile = tiles[sequenceIndex];
const auto rotatedFirstTile = CoordsXYZ{
CoordsXY{ tile.x_offset, tile.y_offset }.Rotate(direction),
tile.z_offset,
CoordsXY{ initialTile.offset }.Rotate(direction),
initialTile.offset.z,
};
const auto firstTile = CoordsXYZ{ loc, largeScenery->GetBaseZ() } - rotatedFirstTile;
for (int32_t i = 0; tiles[i].x_offset != -1; i++)
for (auto& tile : tiles)
{
const auto rotatedCurrentTile = CoordsXYZ{ CoordsXY{ tiles[i].x_offset, tiles[i].y_offset }.Rotate(direction),
tiles[i].z_offset };
const auto rotatedCurrentTile = CoordsXYZ{ CoordsXY{ tile.offset }.Rotate(direction), tile.offset.z };
const auto currentTile = firstTile + rotatedCurrentTile;
@@ -2192,7 +2191,7 @@ namespace OpenRCT2::Scripting
continue;
if (tileElement->AsLargeScenery()->GetEntryIndex() != largeScenery->GetEntryIndex())
continue;
if (tileElement->AsLargeScenery()->GetSequenceIndex() != i)
if (tileElement->AsLargeScenery()->GetSequenceIndex() != tile.index)
continue;
return tileElement->AsLargeScenery();