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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user