From 92dc3f4aa933f882c6b84ac357d426adc259317e Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 14 Feb 2021 21:45:52 +0100 Subject: [PATCH] (Try to) make proximity track type calculation more robust --- src/openrct2/rct2/S6Exporter.cpp | 5 ++++- src/openrct2/rct2/S6Importer.cpp | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index 1df70284ce..ef672e6195 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -780,7 +780,10 @@ void S6Exporter::ExportRideRatingsCalcData() dst.proximity_start_z = src.ProximityStart.z; dst.current_ride = src.CurrentRide; dst.state = src.State; - dst.proximity_track_type = OpenRCT2TrackTypeToRCT2(src.ProximityTrackType); + if (src.ProximityTrackType == TrackElemType::None) + dst.proximity_track_type = 0xFF; + else + dst.proximity_track_type = OpenRCT2TrackTypeToRCT2(src.ProximityTrackType); dst.proximity_base_height = src.ProximityBaseHeight; dst.proximity_total = src.ProximityTotal; for (size_t i = 0; i < std::size(dst.proximity_scores); i++) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 08012ae765..2c0313821d 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -803,7 +803,12 @@ public: dst.ProximityStart = { src.proximity_start_x, src.proximity_start_y, src.proximity_start_z }; dst.CurrentRide = src.current_ride; dst.State = src.state; - dst.ProximityTrackType = RCT2TrackTypeToOpenRCT2(src.proximity_track_type, _s6.rides[src.current_ride].type); + if (src.proximity_track_type == 0xFF) + dst.ProximityTrackType = TrackElemType::None; + else if (src.current_ride < RCT12_MAX_RIDES_IN_PARK) + dst.ProximityTrackType = RCT2TrackTypeToOpenRCT2(src.proximity_track_type, _s6.rides[src.current_ride].type); + else + dst.ProximityTrackType = src.proximity_track_type; dst.ProximityBaseHeight = src.proximity_base_height; dst.ProximityTotal = src.proximity_total; for (size_t i = 0; i < std::size(src.proximity_scores); i++)