From e88c5e4399ff1fe4b0fa4de5a4f2e466b47c5d19 Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Fri, 22 Aug 2025 18:07:55 +0200 Subject: [PATCH] Move Scenario::Category into its own unit --- src/openrct2-ui/scripting/ScUi.hpp | 24 +- .../windows/EditorScenarioOptions.cpp | 10 +- src/openrct2-ui/windows/ScenarioSelect.cpp | 5 +- src/openrct2/Editor.cpp | 4 +- src/openrct2/libopenrct2.vcxproj | 2 + src/openrct2/park/ParkFile.cpp | 2 +- src/openrct2/rct1/S4Importer.cpp | 6 +- src/openrct2/rct2/S6Importer.cpp | 2 +- src/openrct2/scenario/Scenario.cpp | 5 - src/openrct2/scenario/Scenario.h | 24 -- src/openrct2/scenario/ScenarioCategory.cpp | 20 + src/openrct2/scenario/ScenarioCategory.h | 37 ++ src/openrct2/scenario/ScenarioOptions.h | 5 +- src/openrct2/scenario/ScenarioRepository.cpp | 15 +- src/openrct2/scenario/ScenarioRepository.h | 8 +- src/openrct2/scenario/ScenarioSources.cpp | 368 +++++++++--------- src/openrct2/scenario/ScenarioSources.h | 7 +- 17 files changed, 292 insertions(+), 252 deletions(-) create mode 100644 src/openrct2/scenario/ScenarioCategory.cpp create mode 100644 src/openrct2/scenario/ScenarioCategory.h diff --git a/src/openrct2-ui/scripting/ScUi.hpp b/src/openrct2-ui/scripting/ScUi.hpp index 965e88f3a4..7b2f62c994 100644 --- a/src/openrct2-ui/scripting/ScUi.hpp +++ b/src/openrct2-ui/scripting/ScUi.hpp @@ -22,7 +22,7 @@ #include #include #include - #include + #include #include #include #include @@ -40,16 +40,16 @@ namespace OpenRCT2::Ui::Windows namespace OpenRCT2::Scripting { - static const DukEnumMap ScenarioCategoryMap( + static const DukEnumMap ScenarioCategoryMap( { - { "beginner", ScenarioCategory::beginner }, - { "challenging", ScenarioCategory::challenging }, - { "expert", ScenarioCategory::expert }, - { "real", ScenarioCategory::real }, - { "other", ScenarioCategory::other }, - { "dlc", ScenarioCategory::dlc }, - { "build_your_own", ScenarioCategory::buildYourOwn }, - { "competitions", ScenarioCategory::competitions }, + { "beginner", Scenario::Category::beginner }, + { "challenging", Scenario::Category::challenging }, + { "expert", Scenario::Category::expert }, + { "real", Scenario::Category::real }, + { "other", Scenario::Category::other }, + { "dlc", Scenario::Category::dlc }, + { "build_your_own", Scenario::Category::buildYourOwn }, + { "competitions", Scenario::Category::competitions }, }); static const DukEnumMap ScenarioSourceMap( @@ -66,12 +66,12 @@ namespace OpenRCT2::Scripting }); template<> - inline DukValue ToDuk(duk_context* ctx, const ScenarioCategory& value) + inline DukValue ToDuk(duk_context* ctx, const Scenario::Category& value) { const auto& entry = ScenarioCategoryMap.find(value); if (entry != ScenarioCategoryMap.end()) return ToDuk(ctx, entry->first); - return ToDuk(ctx, ScenarioCategoryMap[ScenarioCategory::other]); + return ToDuk(ctx, ScenarioCategoryMap[Scenario::Category::other]); } template<> diff --git a/src/openrct2-ui/windows/EditorScenarioOptions.cpp b/src/openrct2-ui/windows/EditorScenarioOptions.cpp index f4c7f7babc..55edfaa4a1 100644 --- a/src/openrct2-ui/windows/EditorScenarioOptions.cpp +++ b/src/openrct2-ui/windows/EditorScenarioOptions.cpp @@ -773,10 +773,10 @@ namespace OpenRCT2::Ui::Windows void ShowCategoryDropdown() { - for (int32_t i = EnumValue(ScenarioCategory::beginner); i <= EnumValue(ScenarioCategory::other); i++) + for (int32_t i = EnumValue(Scenario::Category::beginner); i <= EnumValue(Scenario::Category::other); i++) { gDropdownItems[i].format = STR_DROPDOWN_MENU_LABEL; - gDropdownItems[i].args = kScenarioCategoryStringIds[i]; + gDropdownItems[i].args = Scenario::kScenarioCategoryStringIds[i]; } Widget* dropdownWidget = &widgets[WIDX_CATEGORY]; @@ -1262,9 +1262,9 @@ namespace OpenRCT2::Ui::Windows case WIDX_CATEGORY_DROPDOWN: { auto& gameState = getGameState(); - if (gameState.scenarioOptions.category != static_cast(dropdownIndex)) + if (gameState.scenarioOptions.category != static_cast(dropdownIndex)) { - gameState.scenarioOptions.category = static_cast(dropdownIndex); + gameState.scenarioOptions.category = static_cast(dropdownIndex); Invalidate(); } break; @@ -1325,7 +1325,7 @@ namespace OpenRCT2::Ui::Windows // Scenario category value screenCoords = windowPos + ScreenCoordsXY{ widgets[WIDX_CATEGORY].left + 1, widgets[WIDX_CATEGORY].top }; ft = Formatter(); - ft.Add(kScenarioCategoryStringIds[EnumValue(gameState.scenarioOptions.category)]); + ft.Add(Scenario::kScenarioCategoryStringIds[EnumValue(gameState.scenarioOptions.category)]); DrawTextBasic(rt, screenCoords, STR_WINDOW_COLOUR_2_STRINGID, ft); } diff --git a/src/openrct2-ui/windows/ScenarioSelect.cpp b/src/openrct2-ui/windows/ScenarioSelect.cpp index d1f2e6f6cf..bb73da0f3b 100644 --- a/src/openrct2-ui/windows/ScenarioSelect.cpp +++ b/src/openrct2-ui/windows/ScenarioSelect.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -682,7 +683,7 @@ namespace OpenRCT2::Ui::Windows union { uint8_t raw = UINT8_MAX; - ScenarioCategory category; + Scenario::Category category; ScenarioSource source; } currentHeading{}; for (size_t i = 0; i < numScenarios; i++) @@ -697,7 +698,7 @@ namespace OpenRCT2::Ui::Windows if (selected_tab != EnumValue(ScenarioSource::Real) && currentHeading.category != scenario->Category) { currentHeading.category = scenario->Category; - headingStringId = kScenarioCategoryStringIds[currentHeading.raw]; + headingStringId = Scenario::kScenarioCategoryStringIds[currentHeading.raw]; } if (headingStringId != kStringIdNone) diff --git a/src/openrct2/Editor.cpp b/src/openrct2/Editor.cpp index b5fc2f57cb..108550d788 100644 --- a/src/openrct2/Editor.cpp +++ b/src/openrct2/Editor.cpp @@ -113,7 +113,7 @@ namespace OpenRCT2::Editor gLegacyScene = LegacyScene::scenarioEditor; gameState.editorStep = EditorStep::ObjectSelection; gameState.park.flags |= PARK_FLAGS_SHOW_REAL_GUEST_NAMES; - gameState.scenarioOptions.category = ScenarioCategory::other; + gameState.scenarioOptions.category = Scenario::Category::other; ObjectListLoad(); ViewportInitAll(); WindowBase* mainWindow = OpenEditorWindows(); @@ -157,7 +157,7 @@ namespace OpenRCT2::Editor gLegacyScene = LegacyScene::scenarioEditor; gameState.editorStep = EditorStep::OptionsSelection; - gameState.scenarioOptions.category = ScenarioCategory::other; + gameState.scenarioOptions.category = Scenario::Category::other; ViewportInitAll(); OpenEditorWindows(); FinaliseMainView(); diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index ef10cf4c00..86e83fa63e 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -548,6 +548,7 @@ + @@ -1086,6 +1087,7 @@ + diff --git a/src/openrct2/park/ParkFile.cpp b/src/openrct2/park/ParkFile.cpp index cce30bc736..7f725c7b46 100644 --- a/src/openrct2/park/ParkFile.cpp +++ b/src/openrct2/park/ParkFile.cpp @@ -219,7 +219,7 @@ namespace OpenRCT2 ScenarioIndexEntry entry{}; auto& os = *_os; os.readWriteChunk(ParkFileChunkType::SCENARIO, [&entry](OrcaStream::ChunkStream& cs) { - entry.Category = cs.read(); + entry.Category = cs.read(); std::string name; ReadWriteStringTable(cs, name, "en-GB"); diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 7ce75afe87..62f3edb109 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -236,7 +236,7 @@ namespace OpenRCT2::RCT1 bool isOfficial = ScenarioSources::TryGetById(_s4.ScenarioSlotIndex, &desc); // Perform an additional name check if this is detected to be a competition scenario - if (isOfficial && desc.category == ScenarioCategory::competitions) + if (isOfficial && desc.category == Scenario::Category::competitions) isOfficial = ScenarioSources::TryGetByName(_s4.ScenarioName, &desc); dst->Category = desc.category; @@ -360,7 +360,7 @@ namespace OpenRCT2::RCT1 gameStateInitAll(gameState, { mapSize, mapSize }); gameState.editorStep = EditorStep::ObjectSelection; gameState.park.flags |= PARK_FLAGS_SHOW_REAL_GUEST_NAMES; - gameState.scenarioOptions.category = ScenarioCategory::other; + gameState.scenarioOptions.category = Scenario::Category::other; } std::string GetRCT1ScenarioName() @@ -2432,7 +2432,7 @@ namespace OpenRCT2::RCT1 bool isOfficial = ScenarioSources::TryGetById(_s4.ScenarioSlotIndex, &desc); // Perform an additional name check if this is detected to be a competition scenario - if (isOfficial && desc.category == ScenarioCategory::competitions) + if (isOfficial && desc.category == Scenario::Category::competitions) isOfficial = ScenarioSources::TryGetByName(_s4.ScenarioName, &desc); if (isOfficial && !desc.textObjectId.empty()) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index d9b4169139..1a461bbaa0 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -280,7 +280,7 @@ namespace OpenRCT2::RCT2 { dst->ScenarioId = SC_UNIDENTIFIED; dst->SourceIndex = -1; - if (dst->Category == ScenarioCategory::real) + if (dst->Category == Scenario::Category::real) { dst->SourceGame = ScenarioSource::Real; } diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 1b85efb38f..d42cd52f4b 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -69,11 +69,6 @@ using namespace OpenRCT2; using namespace OpenRCT2::Scenario; -const StringId kScenarioCategoryStringIds[EnumValue(ScenarioCategory::count)] = { - STR_BEGINNER_PARKS, STR_CHALLENGING_PARKS, STR_EXPERT_PARKS, STR_REAL_PARKS, STR_OTHER_PARKS, - STR_DLC_PARKS, STR_BUILD_YOUR_OWN_PARKS, STR_COMPETITIONS, STR_UCES_TM, STR_UCES_KD, -}; - std::string gScenarioSavePath; bool gFirstTimeSaving = true; uint32_t gLastAutoSaveUpdate = 0; diff --git a/src/openrct2/scenario/Scenario.h b/src/openrct2/scenario/Scenario.h index 66fee757ed..11af838bc7 100644 --- a/src/openrct2/scenario/Scenario.h +++ b/src/openrct2/scenario/Scenario.h @@ -9,12 +9,9 @@ #pragma once -#include "../core/EnumUtils.hpp" #include "../core/Money.hpp" #include "../core/Random.hpp" #include "../core/String.hpp" -#include "../localisation/StringIdType.h" -#include "../ride/RideRatings.h" struct ResultWithMessage; @@ -36,25 +33,6 @@ enum S6_TYPE_SCENARIO }; -enum class ScenarioCategory : uint8_t -{ - // RCT2 categories (keep order) - beginner, - challenging, - expert, - real, - other, - - // OpenRCT2 categories - dlc, - buildYourOwn, - competitions, - timeMachine, - katysDreamworld, - - count, -}; - enum { AUTOSAVE_EVERY_MINUTE, @@ -70,8 +48,6 @@ constexpr uint8_t kDefaultNumAutosavesToKeep = 10; static constexpr money64 kCompanyValueOnFailedObjective = 0x8000000000000001; -extern const StringId kScenarioCategoryStringIds[EnumValue(ScenarioCategory::count)]; - extern bool gAllowEarlyCompletionInNetworkPlay; extern std::string gScenarioSavePath; diff --git a/src/openrct2/scenario/ScenarioCategory.cpp b/src/openrct2/scenario/ScenarioCategory.cpp new file mode 100644 index 0000000000..0404202b6d --- /dev/null +++ b/src/openrct2/scenario/ScenarioCategory.cpp @@ -0,0 +1,20 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "ScenarioCategory.h" + +#include "../localisation/StringIds.h" + +namespace OpenRCT2::Scenario +{ + const StringId kScenarioCategoryStringIds[EnumValue(Category::count)] = { + STR_BEGINNER_PARKS, STR_CHALLENGING_PARKS, STR_EXPERT_PARKS, STR_REAL_PARKS, STR_OTHER_PARKS, + STR_DLC_PARKS, STR_BUILD_YOUR_OWN_PARKS, STR_COMPETITIONS, STR_UCES_TM, STR_UCES_KD, + }; +} diff --git a/src/openrct2/scenario/ScenarioCategory.h b/src/openrct2/scenario/ScenarioCategory.h new file mode 100644 index 0000000000..de02649e5e --- /dev/null +++ b/src/openrct2/scenario/ScenarioCategory.h @@ -0,0 +1,37 @@ +/***************************************************************************** + * Copyright (c) 2014-2025 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "../core/EnumUtils.hpp" +#include "../localisation/StringIdType.h" + +namespace OpenRCT2::Scenario +{ + enum class Category : uint8_t + { + // RCT2 categories (keep order) + beginner, + challenging, + expert, + real, + other, + + // OpenRCT2 categories + dlc, + buildYourOwn, + competitions, + timeMachine, + katysDreamworld, + + count, + }; + + extern const StringId kScenarioCategoryStringIds[EnumValue(Category::count)]; +} // namespace OpenRCT2::Scenario diff --git a/src/openrct2/scenario/ScenarioOptions.h b/src/openrct2/scenario/ScenarioOptions.h index b8b7292186..df448327d9 100644 --- a/src/openrct2/scenario/ScenarioOptions.h +++ b/src/openrct2/scenario/ScenarioOptions.h @@ -10,7 +10,8 @@ #pragma once #include "../core/Money.hpp" -#include "Scenario.h" +#include "ScenarioCategory.h" +#include "ScenarioObjective.h" #include @@ -19,7 +20,7 @@ namespace OpenRCT2::Scenario struct Options { Objective objective; - ScenarioCategory category; + Category category; std::string name; std::string details; diff --git a/src/openrct2/scenario/ScenarioRepository.cpp b/src/openrct2/scenario/ScenarioRepository.cpp index 9eb8bdb085..713bcfc684 100644 --- a/src/openrct2/scenario/ScenarioRepository.cpp +++ b/src/openrct2/scenario/ScenarioRepository.cpp @@ -30,6 +30,7 @@ #include "../rct2/RCT2.h" #include "../sawyer_coding/SawyerChunkReader.h" #include "Scenario.h" +#include "ScenarioCategory.h" #include "ScenarioSources.h" #include @@ -38,17 +39,17 @@ using namespace OpenRCT2; -static int32_t ScenarioCategoryCompare(ScenarioCategory categoryA, ScenarioCategory categoryB) +static int32_t ScenarioCategoryCompare(Scenario::Category categoryA, Scenario::Category categoryB) { if (categoryA == categoryB) return 0; - if (categoryA == ScenarioCategory::dlc) + if (categoryA == Scenario::Category::dlc) return -1; - if (categoryB == ScenarioCategory::dlc) + if (categoryB == Scenario::Category::dlc) return 1; - if (categoryA == ScenarioCategory::buildYourOwn) + if (categoryA == Scenario::Category::buildYourOwn) return -1; - if (categoryB == ScenarioCategory::buildYourOwn) + if (categoryB == Scenario::Category::buildYourOwn) return 1; if (categoryA < categoryB) return -1; @@ -72,8 +73,8 @@ static int32_t ScenarioIndexEntryCompareByCategory(const ScenarioIndexEntry& ent return static_cast(entryA.SourceGame) - static_cast(entryB.SourceGame); } return strcmp(entryA.Name.c_str(), entryB.Name.c_str()); - case ScenarioCategory::real: - case ScenarioCategory::other: + case Scenario::Category::real: + case Scenario::Category::other: return strcmp(entryA.Name.c_str(), entryB.Name.c_str()); } } diff --git a/src/openrct2/scenario/ScenarioRepository.h b/src/openrct2/scenario/ScenarioRepository.h index feb4f13619..6b9d9ff6c9 100644 --- a/src/openrct2/scenario/ScenarioRepository.h +++ b/src/openrct2/scenario/ScenarioRepository.h @@ -17,7 +17,11 @@ #include struct RCTObjectEntry; -enum class ScenarioCategory : uint8_t; + +namespace OpenRCT2::Scenario +{ + enum class Category : uint8_t; +} struct ScenarioHighscoreEntry { @@ -47,7 +51,7 @@ struct ScenarioIndexEntry uint64_t Timestamp; // Category / sequence - ScenarioCategory Category; + OpenRCT2::Scenario::Category Category; ScenarioSource SourceGame; int16_t SourceIndex = -1; uint16_t ScenarioId; diff --git a/src/openrct2/scenario/ScenarioSources.cpp b/src/openrct2/scenario/ScenarioSources.cpp index 03d99e6e78..9a43c8c600 100644 --- a/src/openrct2/scenario/ScenarioSources.cpp +++ b/src/openrct2/scenario/ScenarioSources.cpp @@ -12,7 +12,7 @@ #include "../Diagnostic.h" #include "../core/Guard.hpp" #include "../core/String.hpp" -#include "Scenario.h" +#include "ScenarioCategory.h" #include "ScenarioRepository.h" #include @@ -30,7 +30,7 @@ namespace OpenRCT2::ScenarioSources { const uint8_t Id; const utf8* Title; - const ScenarioCategory Category; + const Scenario::Category Category; u8string_view TextObjectId; }; @@ -121,226 +121,226 @@ namespace OpenRCT2::ScenarioSources // RCT static constexpr ScenarioTitleDescriptor kScenarioTitlesRCT1[] = { - { SC_FOREST_FRONTIERS, "Forest Frontiers", ScenarioCategory::beginner, "rct1.scenario_meta.forest_frontiers" }, - { SC_DYNAMITE_DUNES, "Dynamite Dunes", ScenarioCategory::beginner, "rct1.scenario_meta.dynamite_dunes" }, - { SC_LEAFY_LAKE, "Leafy Lake", ScenarioCategory::beginner, "rct1.scenario_meta.leafy_lake" }, - { SC_DIAMOND_HEIGHTS, "Diamond Heights", ScenarioCategory::beginner, "rct1.scenario_meta.diamond_heights" }, - { SC_EVERGREEN_GARDENS, "Evergreen Gardens", ScenarioCategory::beginner, "rct1.scenario_meta.evergreen_gardens" }, - { SC_BUMBLY_BEACH, "Bumbly Beach", ScenarioCategory::beginner, "rct1.scenario_meta.bumbly_beach" }, - { SC_TRINITY_ISLANDS, "Trinity Islands", ScenarioCategory::challenging, "rct1.scenario_meta.trinity_islands" }, - { SC_KATIES_DREAMLAND, "Katie's Dreamland", ScenarioCategory::challenging, "rct1.scenario_meta.katies_dreamland" }, - { SC_POKEY_PARK, "Pokey Park", ScenarioCategory::challenging, "rct1.scenario_meta.pokey_park" }, - { SC_WHITE_WATER_PARK, "White Water Park", ScenarioCategory::challenging, "rct1.scenario_meta.white_water_park" }, - { SC_MILLENNIUM_MINES, "Millennium Mines", ScenarioCategory::challenging, "rct1.scenario_meta.millennium_mines" }, - { SC_KARTS_COASTERS, "Karts & Coasters", ScenarioCategory::challenging, "rct1.scenario_meta.karts_coasters" }, - { SC_MELS_WORLD, "Mel's World", ScenarioCategory::challenging, "rct1.scenario_meta.mels_world" }, - { SC_MYSTIC_MOUNTAIN, "Mystic Mountain", ScenarioCategory::challenging, "rct1.scenario_meta.mystic_mountain" }, - { SC_PACIFIC_PYRAMIDS, "Pacific Pyramids", ScenarioCategory::challenging, "rct1.scenario_meta.pacific_pyramids" }, - { SC_CRUMBLY_WOODS, "Crumbly Woods", ScenarioCategory::challenging, "rct1.scenario_meta.crumbly_woods" }, - { SC_PARADISE_PIER, "Paradise Pier", ScenarioCategory::challenging, "rct1.scenario_meta.paradise_pier" }, - { SC_LIGHTNING_PEAKS, "Lightning Peaks", ScenarioCategory::expert, "rct1.scenario_meta.lightning_peaks" }, - { SC_IVORY_TOWERS, "Ivory Towers", ScenarioCategory::expert, "rct1.scenario_meta.ivory_towers" }, - { SC_RAINBOW_VALLEY, "Rainbow Valley", ScenarioCategory::expert, "rct1.scenario_meta.rainbow_valley" }, - { SC_THUNDER_ROCK, "Thunder Rock", ScenarioCategory::expert, "rct1.scenario_meta.thunder_rock" }, - { SC_MEGA_PARK, "Mega Park", ScenarioCategory::other, "rct1.scenario_meta.mega_park" }, + { SC_FOREST_FRONTIERS, "Forest Frontiers", Scenario::Category::beginner, "rct1.scenario_meta.forest_frontiers" }, + { SC_DYNAMITE_DUNES, "Dynamite Dunes", Scenario::Category::beginner, "rct1.scenario_meta.dynamite_dunes" }, + { SC_LEAFY_LAKE, "Leafy Lake", Scenario::Category::beginner, "rct1.scenario_meta.leafy_lake" }, + { SC_DIAMOND_HEIGHTS, "Diamond Heights", Scenario::Category::beginner, "rct1.scenario_meta.diamond_heights" }, + { SC_EVERGREEN_GARDENS, "Evergreen Gardens", Scenario::Category::beginner, "rct1.scenario_meta.evergreen_gardens" }, + { SC_BUMBLY_BEACH, "Bumbly Beach", Scenario::Category::beginner, "rct1.scenario_meta.bumbly_beach" }, + { SC_TRINITY_ISLANDS, "Trinity Islands", Scenario::Category::challenging, "rct1.scenario_meta.trinity_islands" }, + { SC_KATIES_DREAMLAND, "Katie's Dreamland", Scenario::Category::challenging, "rct1.scenario_meta.katies_dreamland" }, + { SC_POKEY_PARK, "Pokey Park", Scenario::Category::challenging, "rct1.scenario_meta.pokey_park" }, + { SC_WHITE_WATER_PARK, "White Water Park", Scenario::Category::challenging, "rct1.scenario_meta.white_water_park" }, + { SC_MILLENNIUM_MINES, "Millennium Mines", Scenario::Category::challenging, "rct1.scenario_meta.millennium_mines" }, + { SC_KARTS_COASTERS, "Karts & Coasters", Scenario::Category::challenging, "rct1.scenario_meta.karts_coasters" }, + { SC_MELS_WORLD, "Mel's World", Scenario::Category::challenging, "rct1.scenario_meta.mels_world" }, + { SC_MYSTIC_MOUNTAIN, "Mystic Mountain", Scenario::Category::challenging, "rct1.scenario_meta.mystic_mountain" }, + { SC_PACIFIC_PYRAMIDS, "Pacific Pyramids", Scenario::Category::challenging, "rct1.scenario_meta.pacific_pyramids" }, + { SC_CRUMBLY_WOODS, "Crumbly Woods", Scenario::Category::challenging, "rct1.scenario_meta.crumbly_woods" }, + { SC_PARADISE_PIER, "Paradise Pier", Scenario::Category::challenging, "rct1.scenario_meta.paradise_pier" }, + { SC_LIGHTNING_PEAKS, "Lightning Peaks", Scenario::Category::expert, "rct1.scenario_meta.lightning_peaks" }, + { SC_IVORY_TOWERS, "Ivory Towers", Scenario::Category::expert, "rct1.scenario_meta.ivory_towers" }, + { SC_RAINBOW_VALLEY, "Rainbow Valley", Scenario::Category::expert, "rct1.scenario_meta.rainbow_valley" }, + { SC_THUNDER_ROCK, "Thunder Rock", Scenario::Category::expert, "rct1.scenario_meta.thunder_rock" }, + { SC_MEGA_PARK, "Mega Park", Scenario::Category::other, "rct1.scenario_meta.mega_park" }, }; // RCT: Added Attractions static constexpr ScenarioTitleDescriptor kScenarioTitlesRCT1AA[] = { - { SC_WHISPERING_CLIFFS, "Whispering Cliffs", ScenarioCategory::beginner, "rct1aa.scenario_meta.whispering_cliffs" }, - { SC_THREE_MONKEYS_PARK, "Three Monkeys Park", ScenarioCategory::beginner, "rct1aa.scenario_meta.three_monkeys_park" }, - { SC_CANARY_MINES, "Canary Mines", ScenarioCategory::beginner, "rct1aa.scenario_meta.canary_mines" }, - { SC_BARONY_BRIDGE, "Barony Bridge", ScenarioCategory::beginner, "rct1aa.scenario_meta.barony_bridge" }, - { SC_FUNTOPIA, "Funtopia", ScenarioCategory::beginner, "rct1aa.scenario_meta.funtopia" }, - { SC_HAUNTED_HARBOUR, "Haunted Harbour", ScenarioCategory::beginner, "rct1aa.scenario_meta.haunted_harbour" }, - { SC_FUN_FORTRESS, "Fun Fortress", ScenarioCategory::beginner, "rct1aa.scenario_meta.fun_fortress" }, - { SC_FUTURE_WORLD, "Future World", ScenarioCategory::beginner, "rct1aa.scenario_meta.future_world" }, - { SC_GENTLE_GLEN, "Gentle Glen", ScenarioCategory::beginner, "rct1aa.scenario_meta.gentle_glen" }, - { SC_JOLLY_JUNGLE, "Jolly Jungle", ScenarioCategory::challenging, "rct1aa.scenario_meta.jolly_jungle" }, - { SC_HYDRO_HILLS, "Hydro Hills", ScenarioCategory::challenging, "rct1aa.scenario_meta.hydro_hills" }, - { SC_SPRIGHTLY_PARK, "Sprightly Park", ScenarioCategory::challenging, "rct1aa.scenario_meta.sprightly_park" }, - { SC_MAGIC_QUARTERS, "Magic Quarters", ScenarioCategory::challenging, "rct1aa.scenario_meta.magic_quarters" }, - { SC_FRUIT_FARM, "Fruit Farm", ScenarioCategory::challenging, "rct1aa.scenario_meta.fruit_farm" }, - { SC_BUTTERFLY_DAM, "Butterfly Dam", ScenarioCategory::challenging, "rct1aa.scenario_meta.butterfly_dam" }, - { SC_COASTER_CANYON, "Coaster Canyon", ScenarioCategory::challenging, "rct1aa.scenario_meta.coaster_canyon" }, - { SC_THUNDERSTORM_PARK, "Thunderstorm Park", ScenarioCategory::challenging, "rct1aa.scenario_meta.thunderstorm_park" }, - { SC_HARMONIC_HILLS, "Harmonic Hills", ScenarioCategory::challenging, "rct1aa.scenario_meta.harmonic_hills" }, - { SC_ROMAN_VILLAGE, "Roman Village", ScenarioCategory::challenging, "rct1aa.scenario_meta.roman_village" }, - { SC_SWAMP_COVE, "Swamp Cove", ScenarioCategory::challenging, "rct1aa.scenario_meta.swamp_cove" }, - { SC_ADRENALINE_HEIGHTS, "Adrenaline Heights", ScenarioCategory::challenging, "rct1aa.scenario_meta.adrenaline_heights" }, - { SC_UTOPIA_PARK, "Utopia Park", ScenarioCategory::challenging, "rct1aa.scenario_meta.utopia_park" }, - { SC_ROTTING_HEIGHTS, "Rotting Heights", ScenarioCategory::expert, "rct1aa.scenario_meta.rotting_heights" }, - { SC_FIASCO_FOREST, "Fiasco Forest", ScenarioCategory::expert, "rct1aa.scenario_meta.fiasco_forest" }, - { SC_PICKLE_PARK, "Pickle Park", ScenarioCategory::expert, "rct1aa.scenario_meta.pickle_park" }, - { SC_GIGGLE_DOWNS, "Giggle Downs", ScenarioCategory::expert, "rct1aa.scenario_meta.giggle_downs" }, - { SC_MINERAL_PARK, "Mineral Park", ScenarioCategory::expert, "rct1aa.scenario_meta.mineral_park" }, - { SC_COASTER_CRAZY, "Coaster Crazy", ScenarioCategory::expert, "rct1aa.scenario_meta.coaster_crazy" }, - { SC_URBAN_PARK, "Urban Park", ScenarioCategory::expert, "rct1aa.scenario_meta.urban_park" }, - { SC_GEOFFREY_GARDENS, "Geoffrey Gardens", ScenarioCategory::expert, "rct1aa.scenario_meta.geoffrey_gardens" }, + { SC_WHISPERING_CLIFFS, "Whispering Cliffs", Scenario::Category::beginner, "rct1aa.scenario_meta.whispering_cliffs" }, + { SC_THREE_MONKEYS_PARK, "Three Monkeys Park", Scenario::Category::beginner, "rct1aa.scenario_meta.three_monkeys_park" }, + { SC_CANARY_MINES, "Canary Mines", Scenario::Category::beginner, "rct1aa.scenario_meta.canary_mines" }, + { SC_BARONY_BRIDGE, "Barony Bridge", Scenario::Category::beginner, "rct1aa.scenario_meta.barony_bridge" }, + { SC_FUNTOPIA, "Funtopia", Scenario::Category::beginner, "rct1aa.scenario_meta.funtopia" }, + { SC_HAUNTED_HARBOUR, "Haunted Harbour", Scenario::Category::beginner, "rct1aa.scenario_meta.haunted_harbour" }, + { SC_FUN_FORTRESS, "Fun Fortress", Scenario::Category::beginner, "rct1aa.scenario_meta.fun_fortress" }, + { SC_FUTURE_WORLD, "Future World", Scenario::Category::beginner, "rct1aa.scenario_meta.future_world" }, + { SC_GENTLE_GLEN, "Gentle Glen", Scenario::Category::beginner, "rct1aa.scenario_meta.gentle_glen" }, + { SC_JOLLY_JUNGLE, "Jolly Jungle", Scenario::Category::challenging, "rct1aa.scenario_meta.jolly_jungle" }, + { SC_HYDRO_HILLS, "Hydro Hills", Scenario::Category::challenging, "rct1aa.scenario_meta.hydro_hills" }, + { SC_SPRIGHTLY_PARK, "Sprightly Park", Scenario::Category::challenging, "rct1aa.scenario_meta.sprightly_park" }, + { SC_MAGIC_QUARTERS, "Magic Quarters", Scenario::Category::challenging, "rct1aa.scenario_meta.magic_quarters" }, + { SC_FRUIT_FARM, "Fruit Farm", Scenario::Category::challenging, "rct1aa.scenario_meta.fruit_farm" }, + { SC_BUTTERFLY_DAM, "Butterfly Dam", Scenario::Category::challenging, "rct1aa.scenario_meta.butterfly_dam" }, + { SC_COASTER_CANYON, "Coaster Canyon", Scenario::Category::challenging, "rct1aa.scenario_meta.coaster_canyon" }, + { SC_THUNDERSTORM_PARK, "Thunderstorm Park", Scenario::Category::challenging, "rct1aa.scenario_meta.thunderstorm_park" }, + { SC_HARMONIC_HILLS, "Harmonic Hills", Scenario::Category::challenging, "rct1aa.scenario_meta.harmonic_hills" }, + { SC_ROMAN_VILLAGE, "Roman Village", Scenario::Category::challenging, "rct1aa.scenario_meta.roman_village" }, + { SC_SWAMP_COVE, "Swamp Cove", Scenario::Category::challenging, "rct1aa.scenario_meta.swamp_cove" }, + { SC_ADRENALINE_HEIGHTS, "Adrenaline Heights", Scenario::Category::challenging, "rct1aa.scenario_meta.adrenaline_heights" }, + { SC_UTOPIA_PARK, "Utopia Park", Scenario::Category::challenging, "rct1aa.scenario_meta.utopia_park" }, + { SC_ROTTING_HEIGHTS, "Rotting Heights", Scenario::Category::expert, "rct1aa.scenario_meta.rotting_heights" }, + { SC_FIASCO_FOREST, "Fiasco Forest", Scenario::Category::expert, "rct1aa.scenario_meta.fiasco_forest" }, + { SC_PICKLE_PARK, "Pickle Park", Scenario::Category::expert, "rct1aa.scenario_meta.pickle_park" }, + { SC_GIGGLE_DOWNS, "Giggle Downs", Scenario::Category::expert, "rct1aa.scenario_meta.giggle_downs" }, + { SC_MINERAL_PARK, "Mineral Park", Scenario::Category::expert, "rct1aa.scenario_meta.mineral_park" }, + { SC_COASTER_CRAZY, "Coaster Crazy", Scenario::Category::expert, "rct1aa.scenario_meta.coaster_crazy" }, + { SC_URBAN_PARK, "Urban Park", Scenario::Category::expert, "rct1aa.scenario_meta.urban_park" }, + { SC_GEOFFREY_GARDENS, "Geoffrey Gardens", Scenario::Category::expert, "rct1aa.scenario_meta.geoffrey_gardens" }, }; // RCT: Loopy Landscapes static constexpr ScenarioTitleDescriptor kScenarioTitlesRCT1LL[] = { - { SC_ICEBERG_ISLANDS, "Iceberg Islands", ScenarioCategory::beginner, "rct1ll.scenario_meta.iceberg_islands" }, - { SC_VOLCANIA, "Volcania", ScenarioCategory::beginner, "rct1ll.scenario_meta.volcania" }, - { SC_ARID_HEIGHTS, "Arid Heights", ScenarioCategory::beginner, "rct1ll.scenario_meta.arid_heights" }, - { SC_RAZOR_ROCKS, "Razor Rocks", ScenarioCategory::beginner, "rct1ll.scenario_meta.razor_rocks" }, - { SC_CRATER_LAKE, "Crater Lake", ScenarioCategory::beginner, "rct1ll.scenario_meta.crater_lake" }, - { SC_VERTIGO_VIEWS, "Vertigo Views", ScenarioCategory::beginner, "rct1ll.scenario_meta.vertigo_views" }, - { SC_PARADISE_PIER_2, "Paradise Pier 2", ScenarioCategory::challenging, "rct1ll.scenario_meta.paradise_pier_2" }, - { SC_DRAGONS_COVE, "Dragon's Cove", ScenarioCategory::challenging, "rct1ll.scenario_meta.dragons_cove" }, - { SC_GOOD_KNIGHT_PARK, "Good Knight Park", ScenarioCategory::challenging, "rct1ll.scenario_meta.good_knight_park" }, - { SC_WACKY_WARREN, "Wacky Warren", ScenarioCategory::challenging, "rct1ll.scenario_meta.wacky_warren" }, - { SC_GRAND_GLACIER, "Grand Glacier", ScenarioCategory::challenging, "rct1ll.scenario_meta.grand_glacier" }, - { SC_CRAZY_CRATERS, "Crazy Craters", ScenarioCategory::challenging, "rct1ll.scenario_meta.crazy_craters" }, - { SC_DUSTY_DESERT, "Dusty Desert", ScenarioCategory::challenging, "rct1ll.scenario_meta.dusty_desert" }, - { SC_WOODWORM_PARK, "Woodworm Park", ScenarioCategory::challenging, "rct1ll.scenario_meta.woodworm_park" }, - { SC_ICARUS_PARK, "Icarus Park", ScenarioCategory::challenging, "rct1ll.scenario_meta.icarus_park" }, - { SC_SUNNY_SWAMPS, "Sunny Swamps", ScenarioCategory::challenging, "rct1ll.scenario_meta.sunny_swamps" }, - { SC_FRIGHTMARE_HILLS, "Frightmare Hills", ScenarioCategory::challenging, "rct1ll.scenario_meta.frightmare_hills" }, - { SC_THUNDER_ROCKS, "Thunder Rocks", ScenarioCategory::challenging, "rct1ll.scenario_meta.thunder_rocks" }, - { SC_OCTAGON_PARK, "Octagon Park", ScenarioCategory::challenging, "rct1ll.scenario_meta.octagon_park" }, - { SC_PLEASURE_ISLAND, "Pleasure Island", ScenarioCategory::challenging, "rct1ll.scenario_meta.pleasure_island" }, - { SC_ICICLE_WORLDS, "Icicle Worlds", ScenarioCategory::challenging, "rct1ll.scenario_meta.icicle_worlds" }, - { SC_SOUTHERN_SANDS, "Southern Sands", ScenarioCategory::expert, "rct1ll.scenario_meta.southern_sands" }, - { SC_TINY_TOWERS, "Tiny Towers", ScenarioCategory::expert, "rct1ll.scenario_meta.tiny_towers" }, - { SC_NEVERMORE_PARK, "Nevermore Park", ScenarioCategory::expert, "rct1ll.scenario_meta.nevermore_park" }, - { SC_PACIFICA, "Pacifica", ScenarioCategory::expert, "rct1ll.scenario_meta.pacifica" }, - { SC_URBAN_JUNGLE, "Urban Jungle", ScenarioCategory::expert, "rct1ll.scenario_meta.urban_jungle" }, - { SC_TERROR_TOWN, "Terror Town", ScenarioCategory::expert, "rct1ll.scenario_meta.terror_town" }, - { SC_MEGAWORLD_PARK, "Megaworld Park", ScenarioCategory::expert, "rct1ll.scenario_meta.megaworld_park" }, - { SC_VENUS_PONDS, "Venus Ponds", ScenarioCategory::expert, "rct1ll.scenario_meta.venus_ponds" }, - { SC_MICRO_PARK, "Micro Park", ScenarioCategory::expert, "rct1ll.scenario_meta.micro_park" }, + { SC_ICEBERG_ISLANDS, "Iceberg Islands", Scenario::Category::beginner, "rct1ll.scenario_meta.iceberg_islands" }, + { SC_VOLCANIA, "Volcania", Scenario::Category::beginner, "rct1ll.scenario_meta.volcania" }, + { SC_ARID_HEIGHTS, "Arid Heights", Scenario::Category::beginner, "rct1ll.scenario_meta.arid_heights" }, + { SC_RAZOR_ROCKS, "Razor Rocks", Scenario::Category::beginner, "rct1ll.scenario_meta.razor_rocks" }, + { SC_CRATER_LAKE, "Crater Lake", Scenario::Category::beginner, "rct1ll.scenario_meta.crater_lake" }, + { SC_VERTIGO_VIEWS, "Vertigo Views", Scenario::Category::beginner, "rct1ll.scenario_meta.vertigo_views" }, + { SC_PARADISE_PIER_2, "Paradise Pier 2", Scenario::Category::challenging, "rct1ll.scenario_meta.paradise_pier_2" }, + { SC_DRAGONS_COVE, "Dragon's Cove", Scenario::Category::challenging, "rct1ll.scenario_meta.dragons_cove" }, + { SC_GOOD_KNIGHT_PARK, "Good Knight Park", Scenario::Category::challenging, "rct1ll.scenario_meta.good_knight_park" }, + { SC_WACKY_WARREN, "Wacky Warren", Scenario::Category::challenging, "rct1ll.scenario_meta.wacky_warren" }, + { SC_GRAND_GLACIER, "Grand Glacier", Scenario::Category::challenging, "rct1ll.scenario_meta.grand_glacier" }, + { SC_CRAZY_CRATERS, "Crazy Craters", Scenario::Category::challenging, "rct1ll.scenario_meta.crazy_craters" }, + { SC_DUSTY_DESERT, "Dusty Desert", Scenario::Category::challenging, "rct1ll.scenario_meta.dusty_desert" }, + { SC_WOODWORM_PARK, "Woodworm Park", Scenario::Category::challenging, "rct1ll.scenario_meta.woodworm_park" }, + { SC_ICARUS_PARK, "Icarus Park", Scenario::Category::challenging, "rct1ll.scenario_meta.icarus_park" }, + { SC_SUNNY_SWAMPS, "Sunny Swamps", Scenario::Category::challenging, "rct1ll.scenario_meta.sunny_swamps" }, + { SC_FRIGHTMARE_HILLS, "Frightmare Hills", Scenario::Category::challenging, "rct1ll.scenario_meta.frightmare_hills" }, + { SC_THUNDER_ROCKS, "Thunder Rocks", Scenario::Category::challenging, "rct1ll.scenario_meta.thunder_rocks" }, + { SC_OCTAGON_PARK, "Octagon Park", Scenario::Category::challenging, "rct1ll.scenario_meta.octagon_park" }, + { SC_PLEASURE_ISLAND, "Pleasure Island", Scenario::Category::challenging, "rct1ll.scenario_meta.pleasure_island" }, + { SC_ICICLE_WORLDS, "Icicle Worlds", Scenario::Category::challenging, "rct1ll.scenario_meta.icicle_worlds" }, + { SC_SOUTHERN_SANDS, "Southern Sands", Scenario::Category::expert, "rct1ll.scenario_meta.southern_sands" }, + { SC_TINY_TOWERS, "Tiny Towers", Scenario::Category::expert, "rct1ll.scenario_meta.tiny_towers" }, + { SC_NEVERMORE_PARK, "Nevermore Park", Scenario::Category::expert, "rct1ll.scenario_meta.nevermore_park" }, + { SC_PACIFICA, "Pacifica", Scenario::Category::expert, "rct1ll.scenario_meta.pacifica" }, + { SC_URBAN_JUNGLE, "Urban Jungle", Scenario::Category::expert, "rct1ll.scenario_meta.urban_jungle" }, + { SC_TERROR_TOWN, "Terror Town", Scenario::Category::expert, "rct1ll.scenario_meta.terror_town" }, + { SC_MEGAWORLD_PARK, "Megaworld Park", Scenario::Category::expert, "rct1ll.scenario_meta.megaworld_park" }, + { SC_VENUS_PONDS, "Venus Ponds", Scenario::Category::expert, "rct1ll.scenario_meta.venus_ponds" }, + { SC_MICRO_PARK, "Micro Park", Scenario::Category::expert, "rct1ll.scenario_meta.micro_park" }, }; // RCT2 static constexpr ScenarioTitleDescriptor kScenarioTitlesRCT2[] = { - { SC_UNIDENTIFIED, "Electric Fields", ScenarioCategory::beginner, "rct2.scenario_meta.electric_fields" }, - { SC_UNIDENTIFIED, "Factory Capers", ScenarioCategory::beginner, "rct2.scenario_meta.factory_capers" }, - { SC_UNIDENTIFIED, "Crazy Castle", ScenarioCategory::beginner, "rct2.scenario_meta.crazy_castle" }, - { SC_UNIDENTIFIED, "Dusty Greens", ScenarioCategory::beginner, "rct2.scenario_meta.dusty_greens" }, - { SC_UNIDENTIFIED, "Bumbly Bazaar", ScenarioCategory::beginner, "rct2.scenario_meta.bumbly_bazaar" }, - { SC_UNIDENTIFIED, "Infernal Views", ScenarioCategory::challenging, "rct2.scenario_meta.infernal_views" }, - { SC_UNIDENTIFIED, "Lucky Lake", ScenarioCategory::challenging, "rct2.scenario_meta.lucky_lake" }, - { SC_UNIDENTIFIED, "Botany Breakers", ScenarioCategory::challenging, "rct2.scenario_meta.botany_breakers" }, - { SC_UNIDENTIFIED, "Alpine Adventures", ScenarioCategory::challenging, "rct2.scenario_meta.alpine_adventures" }, - { SC_UNIDENTIFIED, "Gravity Gardens", ScenarioCategory::expert, "rct2.scenario_meta.gravity_gardens" }, - { SC_UNIDENTIFIED, "Extreme Heights", ScenarioCategory::expert, "rct2.scenario_meta.extreme_heights" }, - { SC_UNIDENTIFIED, "Amity Airfield", ScenarioCategory::expert, "rct2.scenario_meta.amity_airfield" }, - { SC_UNIDENTIFIED, "Ghost Town", ScenarioCategory::expert, "rct2.scenario_meta.ghost_town" }, - { SC_UNIDENTIFIED, "Fungus Woods", ScenarioCategory::expert, "rct2.scenario_meta.fungus_woods" }, - { SC_UNIDENTIFIED, "Rainbow Summit", ScenarioCategory::expert, "rct2.scenario_meta.rainbow_summit" }, + { SC_UNIDENTIFIED, "Electric Fields", Scenario::Category::beginner, "rct2.scenario_meta.electric_fields" }, + { SC_UNIDENTIFIED, "Factory Capers", Scenario::Category::beginner, "rct2.scenario_meta.factory_capers" }, + { SC_UNIDENTIFIED, "Crazy Castle", Scenario::Category::beginner, "rct2.scenario_meta.crazy_castle" }, + { SC_UNIDENTIFIED, "Dusty Greens", Scenario::Category::beginner, "rct2.scenario_meta.dusty_greens" }, + { SC_UNIDENTIFIED, "Bumbly Bazaar", Scenario::Category::beginner, "rct2.scenario_meta.bumbly_bazaar" }, + { SC_UNIDENTIFIED, "Infernal Views", Scenario::Category::challenging, "rct2.scenario_meta.infernal_views" }, + { SC_UNIDENTIFIED, "Lucky Lake", Scenario::Category::challenging, "rct2.scenario_meta.lucky_lake" }, + { SC_UNIDENTIFIED, "Botany Breakers", Scenario::Category::challenging, "rct2.scenario_meta.botany_breakers" }, + { SC_UNIDENTIFIED, "Alpine Adventures", Scenario::Category::challenging, "rct2.scenario_meta.alpine_adventures" }, + { SC_UNIDENTIFIED, "Gravity Gardens", Scenario::Category::expert, "rct2.scenario_meta.gravity_gardens" }, + { SC_UNIDENTIFIED, "Extreme Heights", Scenario::Category::expert, "rct2.scenario_meta.extreme_heights" }, + { SC_UNIDENTIFIED, "Amity Airfield", Scenario::Category::expert, "rct2.scenario_meta.amity_airfield" }, + { SC_UNIDENTIFIED, "Ghost Town", Scenario::Category::expert, "rct2.scenario_meta.ghost_town" }, + { SC_UNIDENTIFIED, "Fungus Woods", Scenario::Category::expert, "rct2.scenario_meta.fungus_woods" }, + { SC_UNIDENTIFIED, "Rainbow Summit", Scenario::Category::expert, "rct2.scenario_meta.rainbow_summit" }, }; // RCT2: Wacky Worlds static constexpr ScenarioTitleDescriptor kScenarioTitlesRCT2WW[] = { - { SC_UNIDENTIFIED, "North America - Grand Canyon", ScenarioCategory::beginner, "rct2ww.scenario_meta.canyon_calamities" }, - { SC_UNIDENTIFIED, "Asia - Great Wall of China Tourism Enhancement", ScenarioCategory::beginner, "rct2ww.scenario_meta.great_wall_of_china" }, - { SC_UNIDENTIFIED, "Africa - African Diamond Mine", ScenarioCategory::beginner, "rct2ww.scenario_meta.mines_of_africa" }, - { SC_UNIDENTIFIED, "Australasia - Ayers Rock", ScenarioCategory::beginner, "rct2ww.scenario_meta.ayers_adventure" }, - { SC_UNIDENTIFIED, "North America - Rollercoaster Heaven", ScenarioCategory::beginner, "rct2ww.scenario_meta.rollercoaster_heaven" }, - { SC_UNIDENTIFIED, "Africa - Oasis", ScenarioCategory::challenging, "rct2ww.scenario_meta.mirage_madness" }, - { SC_UNIDENTIFIED, "South America - Rio Carnival", ScenarioCategory::challenging, "rct2ww.scenario_meta.sugarloaf_shores" }, - { SC_UNIDENTIFIED, "Asia - Maharaja Palace", ScenarioCategory::challenging, "rct2ww.scenario_meta.park_maharaja" }, - { SC_UNIDENTIFIED, "Africa - Victoria Falls", ScenarioCategory::challenging, "rct2ww.scenario_meta.over_the_edge" }, - { SC_UNIDENTIFIED, "N. America - Extreme Hawaiian Island", ScenarioCategory::challenging, "rct2ww.scenario_meta.wacky_waikiki" }, - { SC_UNIDENTIFIED, "South America - Rain Forest Plateau", ScenarioCategory::challenging, "rct2ww.scenario_meta.rainforest_romp" }, - { SC_UNIDENTIFIED, "Europe - Renovation", ScenarioCategory::challenging, "rct2ww.scenario_meta.from_the_ashes" }, - { SC_UNIDENTIFIED, "Antarctic - Ecological Salvage", ScenarioCategory::expert, "rct2ww.scenario_meta.icy_adventures" }, - { SC_UNIDENTIFIED, "Europe - European Cultural Festival", ScenarioCategory::expert, "rct2ww.scenario_meta.european_extravaganza" }, - { SC_UNIDENTIFIED, "Australasia - Fun at the Beach", ScenarioCategory::expert, "rct2ww.scenario_meta.beach_barbecue_blast" }, - { SC_UNIDENTIFIED, "South America - Inca Lost City", ScenarioCategory::expert, "rct2ww.scenario_meta.lost_city_founder" }, - { SC_UNIDENTIFIED, "Asia - Japanese Coastal Reclaim", ScenarioCategory::expert, "rct2ww.scenario_meta.okinawa_coast" }, + { SC_UNIDENTIFIED, "North America - Grand Canyon", Scenario::Category::beginner, "rct2ww.scenario_meta.canyon_calamities" }, + { SC_UNIDENTIFIED, "Asia - Great Wall of China Tourism Enhancement", Scenario::Category::beginner, "rct2ww.scenario_meta.great_wall_of_china" }, + { SC_UNIDENTIFIED, "Africa - African Diamond Mine", Scenario::Category::beginner, "rct2ww.scenario_meta.mines_of_africa" }, + { SC_UNIDENTIFIED, "Australasia - Ayers Rock", Scenario::Category::beginner, "rct2ww.scenario_meta.ayers_adventure" }, + { SC_UNIDENTIFIED, "North America - Rollercoaster Heaven", Scenario::Category::beginner, "rct2ww.scenario_meta.rollercoaster_heaven" }, + { SC_UNIDENTIFIED, "Africa - Oasis", Scenario::Category::challenging, "rct2ww.scenario_meta.mirage_madness" }, + { SC_UNIDENTIFIED, "South America - Rio Carnival", Scenario::Category::challenging, "rct2ww.scenario_meta.sugarloaf_shores" }, + { SC_UNIDENTIFIED, "Asia - Maharaja Palace", Scenario::Category::challenging, "rct2ww.scenario_meta.park_maharaja" }, + { SC_UNIDENTIFIED, "Africa - Victoria Falls", Scenario::Category::challenging, "rct2ww.scenario_meta.over_the_edge" }, + { SC_UNIDENTIFIED, "N. America - Extreme Hawaiian Island", Scenario::Category::challenging, "rct2ww.scenario_meta.wacky_waikiki" }, + { SC_UNIDENTIFIED, "South America - Rain Forest Plateau", Scenario::Category::challenging, "rct2ww.scenario_meta.rainforest_romp" }, + { SC_UNIDENTIFIED, "Europe - Renovation", Scenario::Category::challenging, "rct2ww.scenario_meta.from_the_ashes" }, + { SC_UNIDENTIFIED, "Antarctic - Ecological Salvage", Scenario::Category::expert, "rct2ww.scenario_meta.icy_adventures" }, + { SC_UNIDENTIFIED, "Europe - European Cultural Festival", Scenario::Category::expert, "rct2ww.scenario_meta.european_extravaganza" }, + { SC_UNIDENTIFIED, "Australasia - Fun at the Beach", Scenario::Category::expert, "rct2ww.scenario_meta.beach_barbecue_blast" }, + { SC_UNIDENTIFIED, "South America - Inca Lost City", Scenario::Category::expert, "rct2ww.scenario_meta.lost_city_founder" }, + { SC_UNIDENTIFIED, "Asia - Japanese Coastal Reclaim", Scenario::Category::expert, "rct2ww.scenario_meta.okinawa_coast" }, }; // RCT2: Time Twister static constexpr ScenarioTitleDescriptor kScenarioTitlesRCT2TT[] = { - { SC_UNIDENTIFIED, "Dark Age - Robin Hood", ScenarioCategory::beginner, "rct2tt.scenario_meta.sherwood_forest" }, - { SC_UNIDENTIFIED, "Prehistoric - After the Asteroid", ScenarioCategory::beginner, "rct2tt.scenario_meta.crater_carnage" }, - { SC_UNIDENTIFIED, "Roaring Twenties - Prison Island", ScenarioCategory::beginner, "rct2tt.scenario_meta.alcatraz" }, - { SC_UNIDENTIFIED, "Future - First Encounters", ScenarioCategory::beginner, "rct2tt.scenario_meta.extraterrestrial_extravaganza" }, - { SC_UNIDENTIFIED, "Roaring Twenties - Schneider Cup", ScenarioCategory::challenging, "rct2tt.scenario_meta.schneider_shores" }, - { SC_UNIDENTIFIED, "Prehistoric - Stone Age", ScenarioCategory::challenging, "rct2tt.scenario_meta.rocky_rambles" }, - { SC_UNIDENTIFIED, "Mythological - Cradle of Civilisation", ScenarioCategory::challenging, "rct2tt.scenario_meta.mythological_madness" }, - { SC_UNIDENTIFIED, "Rock 'n' Roll - Rock 'n' Roll", ScenarioCategory::challenging, "rct2tt.scenario_meta.rock_n_roll_revival" }, - { SC_UNIDENTIFIED, "Future - Future World", ScenarioCategory::challenging, "rct2tt.scenario_meta.gemini_city" }, - { SC_UNIDENTIFIED, "Roaring Twenties - Skyscrapers", ScenarioCategory::expert, "rct2tt.scenario_meta.metropolis" }, - { SC_UNIDENTIFIED, "Rock 'n' Roll - Flower Power", ScenarioCategory::expert, "rct2tt.scenario_meta.woodstock" }, - { SC_UNIDENTIFIED, "Dark Age - Castle", ScenarioCategory::expert, "rct2tt.scenario_meta.cliffside_castle" }, - { SC_UNIDENTIFIED, "Mythological - Animatronic Film Set", ScenarioCategory::expert, "rct2tt.scenario_meta.animatronic_antics" }, - { SC_UNIDENTIFIED, "Prehistoric - Jurassic Safari", ScenarioCategory::expert, "rct2tt.scenario_meta.coastersaurus" }, + { SC_UNIDENTIFIED, "Dark Age - Robin Hood", Scenario::Category::beginner, "rct2tt.scenario_meta.sherwood_forest" }, + { SC_UNIDENTIFIED, "Prehistoric - After the Asteroid", Scenario::Category::beginner, "rct2tt.scenario_meta.crater_carnage" }, + { SC_UNIDENTIFIED, "Roaring Twenties - Prison Island", Scenario::Category::beginner, "rct2tt.scenario_meta.alcatraz" }, + { SC_UNIDENTIFIED, "Future - First Encounters", Scenario::Category::beginner, "rct2tt.scenario_meta.extraterrestrial_extravaganza" }, + { SC_UNIDENTIFIED, "Roaring Twenties - Schneider Cup", Scenario::Category::challenging, "rct2tt.scenario_meta.schneider_shores" }, + { SC_UNIDENTIFIED, "Prehistoric - Stone Age", Scenario::Category::challenging, "rct2tt.scenario_meta.rocky_rambles" }, + { SC_UNIDENTIFIED, "Mythological - Cradle of Civilisation", Scenario::Category::challenging, "rct2tt.scenario_meta.mythological_madness" }, + { SC_UNIDENTIFIED, "Rock 'n' Roll - Rock 'n' Roll", Scenario::Category::challenging, "rct2tt.scenario_meta.rock_n_roll_revival" }, + { SC_UNIDENTIFIED, "Future - Future World", Scenario::Category::challenging, "rct2tt.scenario_meta.gemini_city" }, + { SC_UNIDENTIFIED, "Roaring Twenties - Skyscrapers", Scenario::Category::expert, "rct2tt.scenario_meta.metropolis" }, + { SC_UNIDENTIFIED, "Rock 'n' Roll - Flower Power", Scenario::Category::expert, "rct2tt.scenario_meta.woodstock" }, + { SC_UNIDENTIFIED, "Dark Age - Castle", Scenario::Category::expert, "rct2tt.scenario_meta.cliffside_castle" }, + { SC_UNIDENTIFIED, "Mythological - Animatronic Film Set", Scenario::Category::expert, "rct2tt.scenario_meta.animatronic_antics" }, + { SC_UNIDENTIFIED, "Prehistoric - Jurassic Safari", Scenario::Category::expert, "rct2tt.scenario_meta.coastersaurus" }, }; // User Created Expansion Sets static constexpr ScenarioTitleDescriptor kScenarioTitlesUCES[] = { - { SC_UNIDENTIFIED, "Lighthouse of Alexandria by Katatude for UCES", ScenarioCategory::timeMachine, "uces.scenario_meta.the_lighthouse_of_alexandria" }, - { SC_UNIDENTIFIED, "Cleveland's Luna Park", ScenarioCategory::timeMachine, "uces.scenario_meta.luna_park_cleveland" }, - { SC_UNIDENTIFIED, "Mount Vesuvius 1700 A.D. by Katatude for UCES", ScenarioCategory::timeMachine, "uces.scenario_meta.mount_vesuvius" }, - { SC_UNIDENTIFIED, "The Sandbox by Katatude for UCES", ScenarioCategory::timeMachine, "uces.scenario_meta.the_sandbox" }, - { SC_UNIDENTIFIED, "Niagara Falls & Gorge by Katatude for UCES", ScenarioCategory::timeMachine, "uces.scenario_meta.niagara_falls_gorge" }, - { SC_UNIDENTIFIED, "Rocky Mountain Miners", ScenarioCategory::timeMachine, "uces.scenario_meta.rocky_mountain_miners" }, - { SC_UNIDENTIFIED, "The Time Machine by Katatude for UCES", ScenarioCategory::timeMachine, "uces.scenario_meta.the_time_machine" }, - { SC_UNIDENTIFIED, "Tower of Babel", ScenarioCategory::timeMachine, "uces.scenario_meta.tower_of_babel" }, - { SC_UNIDENTIFIED, "Transformation", ScenarioCategory::timeMachine, "uces.scenario_meta.transformation" }, - { SC_UNIDENTIFIED, "Urbis Incognitus", ScenarioCategory::timeMachine, "uces.scenario_meta.urbis_incognitus" }, - { SC_UNIDENTIFIED, "Beneath the Christmas Tree by Katatude for UCES", ScenarioCategory::katysDreamworld, "uces.scenario_meta.beneath_the_christmas_tree" }, - { SC_UNIDENTIFIED, "Bigrock Blast", ScenarioCategory::katysDreamworld, "uces.scenario_meta.bigrock_blast" }, - { SC_UNIDENTIFIED, "Camp Mockingbird for UCES by Katatude", ScenarioCategory::katysDreamworld, "uces.scenario_meta.camp_mockingbird" }, - { SC_UNIDENTIFIED, "Choo Choo Town", ScenarioCategory::katysDreamworld, "uces.scenario_meta.choochoo_town" }, - { SC_UNIDENTIFIED, "Dragon Islands", ScenarioCategory::katysDreamworld, "uces.scenario_meta.dragon_islands" }, - { SC_UNIDENTIFIED, "Kiddy Karnival II", ScenarioCategory::katysDreamworld, "uces.scenario_meta.kiddie_karnival_ii" }, - { SC_UNIDENTIFIED, "Sand Dune", ScenarioCategory::katysDreamworld, "uces.scenario_meta.sand_dune" }, - { SC_UNIDENTIFIED, "UCES Halloween", ScenarioCategory::other, "uces.scenario_meta.cemetery_ridge" }, + { SC_UNIDENTIFIED, "Lighthouse of Alexandria by Katatude for UCES", Scenario::Category::timeMachine, "uces.scenario_meta.the_lighthouse_of_alexandria" }, + { SC_UNIDENTIFIED, "Cleveland's Luna Park", Scenario::Category::timeMachine, "uces.scenario_meta.luna_park_cleveland" }, + { SC_UNIDENTIFIED, "Mount Vesuvius 1700 A.D. by Katatude for UCES", Scenario::Category::timeMachine, "uces.scenario_meta.mount_vesuvius" }, + { SC_UNIDENTIFIED, "The Sandbox by Katatude for UCES", Scenario::Category::timeMachine, "uces.scenario_meta.the_sandbox" }, + { SC_UNIDENTIFIED, "Niagara Falls & Gorge by Katatude for UCES", Scenario::Category::timeMachine, "uces.scenario_meta.niagara_falls_gorge" }, + { SC_UNIDENTIFIED, "Rocky Mountain Miners", Scenario::Category::timeMachine, "uces.scenario_meta.rocky_mountain_miners" }, + { SC_UNIDENTIFIED, "The Time Machine by Katatude for UCES", Scenario::Category::timeMachine, "uces.scenario_meta.the_time_machine" }, + { SC_UNIDENTIFIED, "Tower of Babel", Scenario::Category::timeMachine, "uces.scenario_meta.tower_of_babel" }, + { SC_UNIDENTIFIED, "Transformation", Scenario::Category::timeMachine, "uces.scenario_meta.transformation" }, + { SC_UNIDENTIFIED, "Urbis Incognitus", Scenario::Category::timeMachine, "uces.scenario_meta.urbis_incognitus" }, + { SC_UNIDENTIFIED, "Beneath the Christmas Tree by Katatude for UCES", Scenario::Category::katysDreamworld, "uces.scenario_meta.beneath_the_christmas_tree" }, + { SC_UNIDENTIFIED, "Bigrock Blast", Scenario::Category::katysDreamworld, "uces.scenario_meta.bigrock_blast" }, + { SC_UNIDENTIFIED, "Camp Mockingbird for UCES by Katatude", Scenario::Category::katysDreamworld, "uces.scenario_meta.camp_mockingbird" }, + { SC_UNIDENTIFIED, "Choo Choo Town", Scenario::Category::katysDreamworld, "uces.scenario_meta.choochoo_town" }, + { SC_UNIDENTIFIED, "Dragon Islands", Scenario::Category::katysDreamworld, "uces.scenario_meta.dragon_islands" }, + { SC_UNIDENTIFIED, "Kiddy Karnival II", Scenario::Category::katysDreamworld, "uces.scenario_meta.kiddie_karnival_ii" }, + { SC_UNIDENTIFIED, "Sand Dune", Scenario::Category::katysDreamworld, "uces.scenario_meta.sand_dune" }, + { SC_UNIDENTIFIED, "UCES Halloween", Scenario::Category::other, "uces.scenario_meta.cemetery_ridge" }, }; // Real parks static constexpr ScenarioTitleDescriptor kScenarioTitlesRealParks[] = { - { SC_ALTON_TOWERS, "Alton Towers", ScenarioCategory::real, "rct1ll.scenario_meta.alton_towers" }, - { SC_HEIDE_PARK, "Heide-Park", ScenarioCategory::real, "rct1ll.scenario_meta.heidepark" }, - { SC_BLACKPOOL_PLEASURE_BEACH, "Blackpool Pleasure Beach", ScenarioCategory::real, "rct1ll.scenario_meta.blackpool_pleasure_beach" }, - { SC_UNIDENTIFIED, "Six Flags Belgium", ScenarioCategory::real, "rct2.scenario_meta.six_flags_belgium" }, - { SC_UNIDENTIFIED, "Six Flags Great Adventure", ScenarioCategory::real, "rct2.scenario_meta.six_flags_great_adventure" }, - { SC_UNIDENTIFIED, "Six Flags Holland", ScenarioCategory::real, "rct2.scenario_meta.six_flags_holland" }, - { SC_UNIDENTIFIED, "Six Flags Magic Mountain", ScenarioCategory::real, "rct2.scenario_meta.six_flags_magic_mountain" }, - { SC_UNIDENTIFIED, "Six Flags over Texas", ScenarioCategory::real, "rct2.scenario_meta.six_flags_over_texas" }, + { SC_ALTON_TOWERS, "Alton Towers", Scenario::Category::real, "rct1ll.scenario_meta.alton_towers" }, + { SC_HEIDE_PARK, "Heide-Park", Scenario::Category::real, "rct1ll.scenario_meta.heidepark" }, + { SC_BLACKPOOL_PLEASURE_BEACH, "Blackpool Pleasure Beach", Scenario::Category::real, "rct1ll.scenario_meta.blackpool_pleasure_beach" }, + { SC_UNIDENTIFIED, "Six Flags Belgium", Scenario::Category::real, "rct2.scenario_meta.six_flags_belgium" }, + { SC_UNIDENTIFIED, "Six Flags Great Adventure", Scenario::Category::real, "rct2.scenario_meta.six_flags_great_adventure" }, + { SC_UNIDENTIFIED, "Six Flags Holland", Scenario::Category::real, "rct2.scenario_meta.six_flags_holland" }, + { SC_UNIDENTIFIED, "Six Flags Magic Mountain", Scenario::Category::real, "rct2.scenario_meta.six_flags_magic_mountain" }, + { SC_UNIDENTIFIED, "Six Flags over Texas", Scenario::Category::real, "rct2.scenario_meta.six_flags_over_texas" }, }; // Other parks static constexpr ScenarioTitleDescriptor kScenarioTitlesExtrasParks[] = { - { SC_FORT_ANACHRONISM, "Fort Anachronism", ScenarioCategory::dlc, "rct1dlc.scenario_meta.fort_anachronism" }, - { SC_TAIWAN_PARK, "Taiwan Park", ScenarioCategory::dlc, "rct1tw.scenario_meta.taiwan_park" }, - { SC_PCPLAYER, "PC Player", ScenarioCategory::dlc, "rct1dlc.scenario_meta.pc_player" }, - { SC_PCGW, "PC Gaming World", ScenarioCategory::dlc, "rct1dlc.scenario_meta.pc_gaming_world" }, - { SC_GAMEPLAY, "gameplay", ScenarioCategory::dlc, "rct1dlc.scenario_meta.gameplay" }, - { SC_UNIDENTIFIED, "Panda World", ScenarioCategory::dlc, "rct2dlc.scenario_meta.panda_world" }, - { SC_UNIDENTIFIED, "Build your own Six Flags Belgium", ScenarioCategory::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_belgium" }, - { SC_UNIDENTIFIED, "Build your own Six Flags Great Adventure", ScenarioCategory::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_great_adventure" }, - { SC_UNIDENTIFIED, "Build your own Six Flags Holland", ScenarioCategory::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_holland" }, - { SC_UNIDENTIFIED, "Build your own Six Flags Magic Mountain", ScenarioCategory::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_magic_mountain" }, - { SC_UNIDENTIFIED, "Build your own Six Flags Park", ScenarioCategory::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_park" }, - { SC_UNIDENTIFIED, "Build your own Six Flags over Texas", ScenarioCategory::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_over_texas" }, - { SC_UNIDENTIFIED, "Competition Land 1", ScenarioCategory::competitions, "rct1dlc.scenario_meta.competition_land_1" }, - { SC_UNIDENTIFIED, "Competition Land 2", ScenarioCategory::competitions, "rct1dlc.scenario_meta.competition_land_2" }, - { SC_BOBSLED_COMPETITION, "Bobsled Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.bobsled_roller_coaster_competition" }, - { SC_GO_KARTS_COMPETITION, "Go Karts Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.go_karts_competition" }, - { SC_INVERTED_ROLLER_COASTER_COMPETITION, "Inverted Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.inverted_roller_coaster_competition" }, - { SC_MINE_TRAIN_COMPETITION, "Mine Train Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.mine_train_roller_coaster_competition" }, - { SC_STAND_UP_STEEL_ROLLER_COASTER_COMPETITION, "Stand-Up Steel Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.stand_up_steel_roller_coaster_competition" }, - { SC_STEEL_CORKSCREW_COMPETITION, "Steel Corkscrew Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.steel_corkscrew_roller_coaster_competition" }, - { SC_STEEL_MINI_ROLLER_COASTER_COMPETITION, "Steel Mini-Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.steel_mini_roller_coaster_competition" }, - { SC_STEEL_ROLLER_COASTER_COMPETITION, "Steel Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.steel_roller_coaster_competition" }, - { SC_STEEL_TWISTER_COMPETITION, "Steel Twister Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.steel_twister_roller_coaster_competition" }, - { SC_SUSPENDED_ROLLER_COASTER_COMPETITION, "Suspended Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.suspended_roller_coaster_competition" }, - { SC_WOODEN_ROLLER_COASTER_COMPETITION, "Wooden Roller Coaster Competition", ScenarioCategory::competitions, "rct1dlc.scenario_meta.wooden_roller_coaster_competition" }, - { SC_UNIDENTIFIED, "Tycoon Park", ScenarioCategory::other, "rct2.scenario_meta.tycoon_park" }, + { SC_FORT_ANACHRONISM, "Fort Anachronism", Scenario::Category::dlc, "rct1dlc.scenario_meta.fort_anachronism" }, + { SC_TAIWAN_PARK, "Taiwan Park", Scenario::Category::dlc, "rct1tw.scenario_meta.taiwan_park" }, + { SC_PCPLAYER, "PC Player", Scenario::Category::dlc, "rct1dlc.scenario_meta.pc_player" }, + { SC_PCGW, "PC Gaming World", Scenario::Category::dlc, "rct1dlc.scenario_meta.pc_gaming_world" }, + { SC_GAMEPLAY, "gameplay", Scenario::Category::dlc, "rct1dlc.scenario_meta.gameplay" }, + { SC_UNIDENTIFIED, "Panda World", Scenario::Category::dlc, "rct2dlc.scenario_meta.panda_world" }, + { SC_UNIDENTIFIED, "Build your own Six Flags Belgium", Scenario::Category::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_belgium" }, + { SC_UNIDENTIFIED, "Build your own Six Flags Great Adventure", Scenario::Category::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_great_adventure" }, + { SC_UNIDENTIFIED, "Build your own Six Flags Holland", Scenario::Category::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_holland" }, + { SC_UNIDENTIFIED, "Build your own Six Flags Magic Mountain", Scenario::Category::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_magic_mountain" }, + { SC_UNIDENTIFIED, "Build your own Six Flags Park", Scenario::Category::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_park" }, + { SC_UNIDENTIFIED, "Build your own Six Flags over Texas", Scenario::Category::buildYourOwn, "rct2.scenario_meta.build_your_own_six_flags_over_texas" }, + { SC_UNIDENTIFIED, "Competition Land 1", Scenario::Category::competitions, "rct1dlc.scenario_meta.competition_land_1" }, + { SC_UNIDENTIFIED, "Competition Land 2", Scenario::Category::competitions, "rct1dlc.scenario_meta.competition_land_2" }, + { SC_BOBSLED_COMPETITION, "Bobsled Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.bobsled_roller_coaster_competition" }, + { SC_GO_KARTS_COMPETITION, "Go Karts Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.go_karts_competition" }, + { SC_INVERTED_ROLLER_COASTER_COMPETITION, "Inverted Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.inverted_roller_coaster_competition" }, + { SC_MINE_TRAIN_COMPETITION, "Mine Train Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.mine_train_roller_coaster_competition" }, + { SC_STAND_UP_STEEL_ROLLER_COASTER_COMPETITION, "Stand-Up Steel Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.stand_up_steel_roller_coaster_competition" }, + { SC_STEEL_CORKSCREW_COMPETITION, "Steel Corkscrew Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.steel_corkscrew_roller_coaster_competition" }, + { SC_STEEL_MINI_ROLLER_COASTER_COMPETITION, "Steel Mini-Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.steel_mini_roller_coaster_competition" }, + { SC_STEEL_ROLLER_COASTER_COMPETITION, "Steel Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.steel_roller_coaster_competition" }, + { SC_STEEL_TWISTER_COMPETITION, "Steel Twister Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.steel_twister_roller_coaster_competition" }, + { SC_SUSPENDED_ROLLER_COASTER_COMPETITION, "Suspended Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.suspended_roller_coaster_competition" }, + { SC_WOODEN_ROLLER_COASTER_COMPETITION, "Wooden Roller Coaster Competition", Scenario::Category::competitions, "rct1dlc.scenario_meta.wooden_roller_coaster_competition" }, + { SC_UNIDENTIFIED, "Tycoon Park", Scenario::Category::other, "rct2.scenario_meta.tycoon_park" }, }; constexpr std::span kScenarioTitlesBySource[] = { @@ -386,7 +386,7 @@ namespace OpenRCT2::ScenarioSources outDesc->id = SC_UNIDENTIFIED; outDesc->source = static_cast(ScenarioSource::Other); outDesc->index = -1; - outDesc->category = ScenarioCategory::other; + outDesc->category = Scenario::Category::other; outDesc->textObjectId = {}; return false; } @@ -419,7 +419,7 @@ namespace OpenRCT2::ScenarioSources outDesc->id = SC_UNIDENTIFIED; outDesc->source = static_cast(ScenarioSource::Other); outDesc->index = -1; - outDesc->category = ScenarioCategory::other; + outDesc->category = Scenario::Category::other; outDesc->textObjectId = {}; return false; } diff --git a/src/openrct2/scenario/ScenarioSources.h b/src/openrct2/scenario/ScenarioSources.h index 03ce947c3f..6e64a2f8c8 100644 --- a/src/openrct2/scenario/ScenarioSources.h +++ b/src/openrct2/scenario/ScenarioSources.h @@ -11,7 +11,10 @@ #include "../core/StringTypes.h" -enum class ScenarioCategory : uint8_t; +namespace OpenRCT2::Scenario +{ + enum class Category : uint8_t; +} struct SourceDescriptor { @@ -19,7 +22,7 @@ struct SourceDescriptor uint8_t id; uint8_t source; int32_t index; - ScenarioCategory category; + OpenRCT2::Scenario::Category category; u8string_view textObjectId; };