From de53ac84b824a51fb4a712a74181eda77b499f83 Mon Sep 17 00:00:00 2001 From: Denis Khabenkov Date: Mon, 7 Oct 2019 21:59:07 +0300 Subject: [PATCH 1/3] Fix #10052: Create a TrackDesignEntranceElement struct to replace rct_td6_entrance_element --- src/openrct2/rct2/T6Importer.cpp | 9 +++++++-- src/openrct2/ride/TrackDesign.cpp | 2 +- src/openrct2/ride/TrackDesign.h | 12 +++++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/rct2/T6Importer.cpp index 64bdba83cf3c..3fe982fc2930 100644 --- a/src/openrct2/rct2/T6Importer.cpp +++ b/src/openrct2/rct2/T6Importer.cpp @@ -159,11 +159,16 @@ class TD6Importer final : public ITrackImporter td->track_elements.push_back(trackElement); } - rct_td6_entrance_element entranceElement{}; + rct_td6_entrance_element t6EntranceElement{}; for (uint8_t endFlag = _stream.ReadValue(); endFlag != 0xFF; endFlag = _stream.ReadValue()) { _stream.SetPosition(_stream.GetPosition() - 1); - _stream.Read(&entranceElement, sizeof(rct_td6_entrance_element)); + _stream.Read(&t6EntranceElement, sizeof(rct_td6_entrance_element)); + TrackDesignEntranceElement entranceElement{}; + entranceElement.z = t6EntranceElement.z; + entranceElement.direction = t6EntranceElement.direction; + entranceElement.x = t6EntranceElement.x; + entranceElement.y = t6EntranceElement.y; td->entrance_elements.push_back(entranceElement); } } diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index c0f1685726b6..7156c8fabc0f 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -300,7 +300,7 @@ rct_string_id TrackDesign::CreateTrackDesignTrack(const Ride& ride) entranceDirection -= _saveDirection; entranceDirection &= TILE_ELEMENT_DIRECTION_MASK; - rct_td6_entrance_element entrance{}; + TrackDesignEntranceElement entrance{}; entrance.direction = entranceDirection; x -= gTrackPreviewOrigin.x; diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 2f077de1a336..04c16f2795ef 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -21,6 +21,16 @@ struct Ride; #define TRACK_PREVIEW_IMAGE_SIZE (370 * 217) +/* Track Entrance entry size: 0x06 */ +struct TrackDesignEntranceElement +{ + int8_t z; // 0x00 + uint8_t direction; // 0x01 + int16_t x; // 0x02 + int16_t y; // 0x04 +}; +assert_struct_size(TrackDesignEntranceElement, 0x06); + /** * Track design structure. */ @@ -69,7 +79,7 @@ struct TrackDesign std::vector maze_elements; std::vector track_elements; - std::vector entrance_elements; + std::vector entrance_elements; std::vector scenery_elements; std::string name; From 163221520b1568054b2c897b061f55c10e361674 Mon Sep 17 00:00:00 2001 From: Denis Khabenkov Date: Mon, 7 Oct 2019 22:26:16 +0300 Subject: [PATCH 2/3] Delete assert and size information --- src/openrct2/ride/TrackDesign.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 04c16f2795ef..6736744cd710 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -21,15 +21,14 @@ struct Ride; #define TRACK_PREVIEW_IMAGE_SIZE (370 * 217) -/* Track Entrance entry size: 0x06 */ +/* Track Entrance entry */ struct TrackDesignEntranceElement { - int8_t z; // 0x00 - uint8_t direction; // 0x01 - int16_t x; // 0x02 - int16_t y; // 0x04 + int8_t z; + uint8_t direction; + int16_t x; + int16_t y; }; -assert_struct_size(TrackDesignEntranceElement, 0x06); /** * Track design structure. From c614532d04fb359eef1a25231a7d00a607b07061 Mon Sep 17 00:00:00 2001 From: Denis Khabenkov Date: Mon, 7 Oct 2019 23:44:12 +0300 Subject: [PATCH 3/3] Add yourself to the contributors.md --- contributors.md | 1 + 1 file changed, 1 insertion(+) diff --git a/contributors.md b/contributors.md index 5c602a47e7c3..6c6e70ff1d49 100644 --- a/contributors.md +++ b/contributors.md @@ -135,6 +135,7 @@ The following people are not part of the development team, but have been contrib * Kenny Castro-Monroy (kennycastro007) * Joseph Atkins-Turkish (Spacerat) * Tulio Paschoalin Leao (tupaschoal) +* Denis Khabenkov (kodmord) ## Toolchain * (Balletie) - macOS