From ff57f43996b82c391e2f92b10899b002eb997dc7 Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Mon, 7 Oct 2019 21:30:24 -0300 Subject: [PATCH 1/2] Create TrackDesignTrackElement struct Closes #10054 --- src/openrct2/ride/TrackDesign.cpp | 2 +- src/openrct2/ride/TrackDesign.h | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/openrct2/ride/TrackDesign.cpp b/src/openrct2/ride/TrackDesign.cpp index 7156c8fabc..e853f0f115 100644 --- a/src/openrct2/ride/TrackDesign.cpp +++ b/src/openrct2/ride/TrackDesign.cpp @@ -201,7 +201,7 @@ rct_string_id TrackDesign::CreateTrackDesignTrack(const Ride& ride) do { - rct_td46_track_element track{}; + TrackDesignTrackElement track{}; track.type = trackElement.element->AsTrack()->GetTrackType(); // TODO move to RCT2 limit if (track.type == TRACK_ELEM_255) diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index 6736744cd7..f262309cfc 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -33,6 +33,20 @@ struct TrackDesignEntranceElement /** * Track design structure. */ + +/* Track Element entry size: 0x02 */ +struct TrackDesignTrackElement +{ + uint8_t type; // 0x00 + uint8_t flags; // 0x01 + TrackDesignTrackElement() = default; + TrackDesignTrackElement(const rct_td46_track_element& formerTrackElement) + : type(formerTrackElement.type) + , flags(formerTrackElement.flags) + { + } +}; + struct TrackDesign { uint8_t type; @@ -77,7 +91,7 @@ struct TrackDesign uint8_t num_circuits; std::vector maze_elements; - std::vector track_elements; + std::vector track_elements; std::vector entrance_elements; std::vector scenery_elements; From 68ce43308e33169279c955bba2bbce11d8b2c37f Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Tue, 8 Oct 2019 07:40:23 -0300 Subject: [PATCH 2/2] Remove implicit conversion constructor --- src/openrct2/rct1/T4Importer.cpp | 7 +++++-- src/openrct2/rct2/T6Importer.cpp | 7 +++++-- src/openrct2/ride/TrackDesign.h | 6 ------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/openrct2/rct1/T4Importer.cpp b/src/openrct2/rct1/T4Importer.cpp index 7d7799662c..9e19b0dd71 100644 --- a/src/openrct2/rct1/T4Importer.cpp +++ b/src/openrct2/rct1/T4Importer.cpp @@ -266,11 +266,14 @@ private: } else { - rct_td46_track_element trackElement{}; + rct_td46_track_element t4TrackElement{}; for (uint8_t endFlag = _stream.ReadValue(); endFlag != 0xFF; endFlag = _stream.ReadValue()) { _stream.SetPosition(_stream.GetPosition() - 1); - _stream.Read(&trackElement, sizeof(rct_td46_track_element)); + _stream.Read(&t4TrackElement, sizeof(rct_td46_track_element)); + TrackDesignTrackElement trackElement{}; + trackElement.type = t4TrackElement.type; + trackElement.flags = trackElement.flags; td->track_elements.push_back(trackElement); } } diff --git a/src/openrct2/rct2/T6Importer.cpp b/src/openrct2/rct2/T6Importer.cpp index 3fe982fc29..770e25c2f2 100644 --- a/src/openrct2/rct2/T6Importer.cpp +++ b/src/openrct2/rct2/T6Importer.cpp @@ -151,11 +151,14 @@ public: } else { - rct_td46_track_element trackElement{}; + rct_td46_track_element t4TrackElement{}; for (uint8_t endFlag = _stream.ReadValue(); endFlag != 0xFF; endFlag = _stream.ReadValue()) { _stream.SetPosition(_stream.GetPosition() - 1); - _stream.Read(&trackElement, sizeof(rct_td46_track_element)); + _stream.Read(&t4TrackElement, sizeof(rct_td46_track_element)); + TrackDesignTrackElement trackElement{}; + trackElement.type = t4TrackElement.type; + trackElement.flags = trackElement.flags; td->track_elements.push_back(trackElement); } diff --git a/src/openrct2/ride/TrackDesign.h b/src/openrct2/ride/TrackDesign.h index f262309cfc..715c0f1eff 100644 --- a/src/openrct2/ride/TrackDesign.h +++ b/src/openrct2/ride/TrackDesign.h @@ -39,12 +39,6 @@ struct TrackDesignTrackElement { uint8_t type; // 0x00 uint8_t flags; // 0x01 - TrackDesignTrackElement() = default; - TrackDesignTrackElement(const rct_td46_track_element& formerTrackElement) - : type(formerTrackElement.type) - , flags(formerTrackElement.flags) - { - } }; struct TrackDesign