Fix #17444: “Manta Ray” boats slowed down too much in “Ayers Rock”

This commit is contained in:
Michael Steenbeek 2022-07-12 20:09:20 +02:00 committed by GitHub
parent fe2f1bad5a
commit 1bf49f95ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 58 additions and 0 deletions

View File

@ -3,6 +3,7 @@
- Feature: [#16662] Show a warning message when g2.dat is mismatched.
- Change: [#17319] Giant screenshots are now cropped to the horizontal view-clipping selection.
- Change: [#17499] Update error text when using vehicle incompatible with TD6 and add error when using incompatible track elements.
- Fix: [#17444] “Manta Ray” boats slowed down too much in “Ayers Rock” scenario (original bug).
0.4.1 (2022-07-04)
------------------------------------------------------------------------

View File

@ -91,6 +91,7 @@ namespace RCT2
S6Data _s6{};
uint8_t _gameVersion = 0;
bool _isSV7 = false;
bool _isScenario = false;
OpenRCT2::BitSet<Limits::MaxRidesInPark> _isFlatRide{};
ObjectEntryIndex _pathToSurfaceMap[16];
ObjectEntryIndex _pathToQueueSurfaceMap[16];
@ -205,6 +206,7 @@ namespace RCT2
chunkReader.ReadChunk(&_s6.next_free_tile_element_pointer_index, 3048816);
}
_isScenario = isScenario;
_s6Path = path;
return ParkLoadResult(GetRequiredObjects());
@ -500,6 +502,7 @@ namespace RCT2
park.Name = GetUserString(_s6.park_name);
FixLandOwnership();
FixAyersRockScenario();
research_determine_first_of_type();
UpdateConsolidatedPatrolAreas();
@ -571,6 +574,60 @@ namespace RCT2
}
}
void FixAyersRockScenario() const
{
if (!_isScenario || !String::Equals(_s6.scenario_filename, "Australasia - Ayers Rock.SC6"))
return;
TileCoordsXY tilesToUncovered[] = {
{ 123, 59 }, { 123, 60 }, { 123, 61 }, { 118, 69 }, { 118, 70 }, { 118, 71 },
{ 118, 72 }, { 118, 73 }, { 112, 79 }, { 112, 80 }, { 112, 81 }, { 112, 82 },
};
for (const auto& tile : tilesToUncovered)
{
auto* tileElement = map_get_first_element_at(tile);
if (tileElement == nullptr)
continue;
do
{
if (tileElement->GetType() != TileElementType::Track)
continue;
auto* trackElement = tileElement->AsTrack();
if (trackElement->GetTrackType() != TrackElemType::FlatCovered)
continue;
trackElement->SetTrackType(TrackElemType::Flat);
} while (!(tileElement++)->IsLastForTile());
}
TileCoordsXY tilesToCovered[] = {
{ 123, 83 },
{ 123, 84 },
{ 123, 85 },
{ 123, 86 },
};
for (const auto& tile : tilesToCovered)
{
auto* tileElement = map_get_first_element_at(tile);
if (tileElement == nullptr)
continue;
do
{
if (tileElement->GetType() != TileElementType::Track)
continue;
auto* trackElement = tileElement->AsTrack();
if (trackElement->GetTrackType() != TrackElemType::Flat)
continue;
trackElement->SetTrackType(TrackElemType::FlatCovered);
} while (!(tileElement++)->IsLastForTile());
}
}
void ImportRides()
{
for (uint8_t index = 0; index < Limits::MaxRidesInPark; index++)