diff --git a/src/openrct2/rct2/RCT2.cpp b/src/openrct2/rct2/RCT2.cpp index a05e70c6bf..b8933d93af 100644 --- a/src/openrct2/rct2/RCT2.cpp +++ b/src/openrct2/rct2/RCT2.cpp @@ -48,6 +48,22 @@ ObjectEntryIndex RCT2RideTypeToOpenRCT2RideType(uint8_t rct2RideType, const rct_ } } +bool RCT2RideTypeNeedsConversion(uint8_t rct2RideType) +{ + switch (rct2RideType) + { + case RIDE_TYPE_CORKSCREW_ROLLER_COASTER: + case RIDE_TYPE_JUNIOR_ROLLER_COASTER: + case RIDE_TYPE_CAR_RIDE: + case RIDE_TYPE_TWISTER_ROLLER_COASTER: + case RIDE_TYPE_STEEL_WILD_MOUSE: + return true; + + default: + return false; + } +} + uint8_t OpenRCT2RideTypeToRCT2RideType(ObjectEntryIndex openrct2Type) { switch (openrct2Type) diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h index cb3a4d90de..ec017c8cbc 100644 --- a/src/openrct2/rct2/RCT2.h +++ b/src/openrct2/rct2/RCT2.h @@ -766,4 +766,5 @@ assert_struct_size(RCT2RideRatingCalculationData, 76); std::vector DecryptSea(const fs::path& path); ObjectEntryIndex RCT2RideTypeToOpenRCT2RideType(uint8_t rct2RideType, const rct_ride_entry* rideEntry); +bool RCT2RideTypeNeedsConversion(uint8_t rct2RideType); uint8_t OpenRCT2RideTypeToRCT2RideType(ObjectEntryIndex openrct2Type); diff --git a/src/openrct2/ride/TrackDesignRepository.cpp b/src/openrct2/ride/TrackDesignRepository.cpp index 7a82ef976d..a366b88579 100644 --- a/src/openrct2/ride/TrackDesignRepository.cpp +++ b/src/openrct2/ride/TrackDesignRepository.cpp @@ -81,7 +81,8 @@ public: auto td6 = track_design_open(path.c_str()); if (td6 != nullptr) { - ObjectEntryIndex rideType = RIDE_TYPE_NULL; + ObjectEntryIndex rideType = td6->type; + if (RCT2RideTypeNeedsConversion(td6->type)) { std::scoped_lock lock(_objectLookupMutex); auto* rawObject = object_repository_load_object(&td6->vehicle_object);