diff --git a/src/openrct2/rct2/T6Exporter.cpp b/src/openrct2/rct2/T6Exporter.cpp index cce39a8079..5c61948e19 100644 --- a/src/openrct2/rct2/T6Exporter.cpp +++ b/src/openrct2/rct2/T6Exporter.cpp @@ -107,7 +107,7 @@ bool T6Exporter::SaveTrack(IStream* stream) for (const auto& entranceElement : _trackDesign->entrance_elements) { - tempStream.WriteValue(entranceElement.z); + tempStream.WriteValue(entranceElement.z == -1 ? (uint8_t)0x80 : entranceElement.z); tempStream.WriteValue(entranceElement.direction | (entranceElement.isExit << 7)); tempStream.WriteValue(entranceElement.x); tempStream.WriteValue(entranceElement.y); diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/rct2/T6Importer.cpp index 6943084ba5..6e995a4df6 100644 --- a/src/openrct2/rct2/T6Importer.cpp +++ b/src/openrct2/rct2/T6Importer.cpp @@ -173,7 +173,7 @@ public: _stream.SetPosition(_stream.GetPosition() - 1); _stream.Read(&t6EntranceElement, sizeof(rct_td6_entrance_element)); TrackDesignEntranceElement entranceElement{}; - entranceElement.z = t6EntranceElement.z; + entranceElement.z = (t6EntranceElement.z == (int8_t)(uint8_t)0x80) ? -1 : t6EntranceElement.z; entranceElement.direction = t6EntranceElement.direction & 0x7F; entranceElement.x = t6EntranceElement.x; entranceElement.y = t6EntranceElement.y; diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 0839c3f523..aeb3033198 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -320,11 +320,6 @@ rct_string_id TrackDesign::CreateTrackDesignTrack(const Ride& ride) return STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; } - if (z == 0xFF) - { - z = 0x80; - } - entrance.z = z; // If this is the exit version @@ -1643,7 +1638,7 @@ static bool track_design_place_ride(TrackDesign* td6, int16_t x, int16_t y, int1 }; TileElement* tile_element = map_get_first_element_at(tile.x >> 5, tile.y >> 5); z = gTrackPreviewOrigin.z / 8; - z += (entrance.z == (int8_t)(uint8_t)0x80) ? -1 : entrance.z; + z += entrance.z; if (tile_element == nullptr) { _trackDesignPlaceCost = MONEY32_UNDEFINED; @@ -1698,8 +1693,7 @@ static bool track_design_place_ride(TrackDesign* td6, int16_t x, int16_t y, int1 } else { - z = (entrance.z == (int8_t)(uint8_t)0x80) ? -1 : entrance.z; - z *= 8; + z = entrance.z * 8; z += gTrackPreviewOrigin.z; auto res = RideEntranceExitPlaceAction::TrackPlaceQuery({ x, y, z }, false);