From 8a35f27cfc517ea79c778f7ba428a2c0c029c23d Mon Sep 17 00:00:00 2001 From: Tulio Leao Date: Sat, 24 Oct 2020 17:10:44 -0300 Subject: [PATCH] Add converter from RideCategory to ResearchCategory --- src/openrct2/interface/InteractiveConsole.cpp | 2 +- src/openrct2/management/Research.cpp | 4 ++-- src/openrct2/rct1/S4Importer.cpp | 4 ++-- src/openrct2/ride/RideData.cpp | 24 +++++++++++++++++++ src/openrct2/ride/RideData.h | 3 +++ 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index c679f2bc06..20503a7b14 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -1087,7 +1087,7 @@ static int32_t cc_load_object(InteractiveConsole& console, const arguments_t& ar rideType = rideEntry->ride_type[j]; if (rideType != RIDE_TYPE_NULL) { - ResearchCategory category = static_cast(RideTypeDescriptors[rideType].Category); + ResearchCategory category = RideTypeDescriptors[rideType].GetResearchCategory(); research_insert_ride_entry(rideType, groupIndex, category, true); } } diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 9712d4ade6..7034c28f51 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -469,7 +469,7 @@ void research_populate_list_random() { if (rideType != RIDE_TYPE_NULL) { - ResearchCategory category = static_cast(RideTypeDescriptors[rideType].Category); + ResearchCategory category = RideTypeDescriptors[rideType].GetResearchCategory(); research_insert_ride_entry(rideType, i, category, researched); } } @@ -508,7 +508,7 @@ void research_insert_ride_entry(ObjectEntryIndex entryIndex, bool researched) { if (rideType != RIDE_TYPE_NULL) { - ResearchCategory category = static_cast(RideTypeDescriptors[rideType].Category); + ResearchCategory category = RideTypeDescriptors[rideType].GetResearchCategory(); research_insert_ride_entry(rideType, entryIndex, category, researched); } } diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 8fe8dcac9c..61f95273aa 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2632,7 +2632,7 @@ private: dst->baseRideType = rideType; dst->type = Research::EntryType::Ride; dst->flags = 0; - dst->category = static_cast(RideTypeDescriptors[rideType].Category); + dst->category = RideTypeDescriptors[rideType].GetResearchCategory(); } } } @@ -2651,7 +2651,7 @@ private: dst->baseRideType = rideType; dst->type = Research::EntryType::Ride; dst->flags = 0; - dst->category = static_cast(RideTypeDescriptors[rideType].Category); + dst->category = RideTypeDescriptors[rideType].GetResearchCategory(); } } } diff --git a/src/openrct2/ride/RideData.cpp b/src/openrct2/ride/RideData.cpp index 8adac5469e..c09cc186b9 100644 --- a/src/openrct2/ride/RideData.cpp +++ b/src/openrct2/ride/RideData.cpp @@ -23,6 +23,7 @@ #include "../audio/audio.h" #include "../interface/Colour.h" #include "../localisation/Localisation.h" +#include "../management/Research.h" #include "../sprites.h" #include "Ride.h" #include "ShopItem.h" @@ -329,3 +330,26 @@ bool RideTypeDescriptor::SupportsTrackPiece(const uint64_t trackPiece) const { return GetAvailableTrackPieces() & (1ULL << trackPiece); } + +ResearchCategory RideTypeDescriptor::GetResearchCategory() const +{ + switch (Category) + { + case RIDE_CATEGORY_TRANSPORT: + return ResearchCategory::Transport; + case RIDE_CATEGORY_GENTLE: + return ResearchCategory::Gentle; + case RIDE_CATEGORY_ROLLERCOASTER: + return ResearchCategory::Rollercoaster; + case RIDE_CATEGORY_THRILL: + return ResearchCategory::Thrill; + case RIDE_CATEGORY_WATER: + return ResearchCategory::Water; + case RIDE_CATEGORY_SHOP: + return ResearchCategory::Shop; + case RIDE_CATEGORY_NONE: + break; + } + log_error("Cannot get Research Category of invalid RideCategory"); + return ResearchCategory::Transport; +} diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index 8fd55de87f..3bec5ef190 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -29,6 +29,8 @@ #include "Track.h" #include "TrackPaint.h" +enum class ResearchCategory : uint8_t; + using ride_ratings_calculation = void (*)(Ride* ride); struct RideComponentName { @@ -176,6 +178,7 @@ struct RideTypeDescriptor bool HasFlag(uint64_t flag) const; uint64_t GetAvailableTrackPieces() const; bool SupportsTrackPiece(const uint64_t trackPiece) const; + ResearchCategory GetResearchCategory() const; }; #ifdef _WIN32