From 82b05950ff8847bdfd7b2d54445333e9e86737b2 Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Fri, 1 Jan 2016 16:30:18 +0000 Subject: [PATCH] add RCT1 title sequence --- data/title/rct1/script.txt | 98 ++++++++++ data/title/rct1aa/script.txt | 187 +++++++++++++++++++ data/title/rct1aall/script.txt | 233 ++++++++++++++++++++++++ src/config.c | 32 +++- src/interface/title_sequences.c | 11 +- src/scenario.h | 108 +++++++++++ src/scenario_sources.c | 311 +++++++++++++++++--------------- src/title.c | 39 ++++ src/title.h | 3 +- src/windows/options.c | 7 +- 10 files changed, 877 insertions(+), 152 deletions(-) create mode 100644 data/title/rct1/script.txt create mode 100644 data/title/rct1aa/script.txt create mode 100644 data/title/rct1aall/script.txt diff --git a/data/title/rct1/script.txt b/data/title/rct1/script.txt new file mode 100644 index 0000000000..6d9ea69198 --- /dev/null +++ b/data/title/rct1/script.txt @@ -0,0 +1,98 @@ +# RollerCoaster Tycoon 1 Title Sequence + +############################## +# RollerCoaster Tycoon 1 # +############################## +# SC_DIAMOND_HEIGHTS +LOADRCT1 3 +ROTATE 2 +LOCATION 47, 99 +WAIT 15 +ROTATE 2 +LOCATION 90, 48 +WAIT 15 +ROTATE 1 +LOCATION 86, 43 +WAIT 15 +ROTATE 3 +LOCATION 57, 50 +WAIT 15 +ROTATE 2 +LOCATION 86, 64 +WAIT 15 + +# SC_KATIES_DREAMLAND +LOADRCT1 7 +LOCATION 48, 44 +WAIT 15 +LOCATION 64, 41 +WAIT 15 + +# SC_POKEY_PARK, +LOADRCT1 8 +ROTATE 2 +LOCATION 56, 64 +WAIT 15 + +# SC_WHITE_WATER_PARK +LOADRCT1 9 +ROTATE 3 +LOCATION 96, 88 +WAIT 15 +LOCATION 84, 95 +WAIT 15 + +# SC_MILLENNIUM_MINES +LOADRCT1 10 +ROTATE 1 +ROTATE 1 +LOCATION 64, 37 +WAIT 15 + +# SC_KARTS_COASTERS +LOADRCT1 11 +LOCATION 84, 56 +WAIT 15 +LOCATION 34, 36 +WAIT 15 +LOCATION 33, 65 +WAIT 15 + +# SC_MELS_WORLD +LOADRCT1 12 +ROTATE 3 +LOCATION 50, 50 +WAIT 15 +LOCATION 35, 39 +WAIT 15 +ROTATE 3 +LOCATION 62, 39 +WAIT 15 + +# SC_CRUMBLY_WOODS +LOADRCT1 15 +ROTATE 3 +LOCATION 57, 94 +WAIT 15 +LOCATION 44, 84 +WAIT 15 +ROTATE 1 +LOCATION 76, 59 +WAIT 15 +LOCATION 76, 48 +WAIT 15 + +# SC_LIGHTNING_PEAKS +LOADRCT1 17 +LOCATION 80, 49 +WAIT 15 +LOCATION 60, 62 +WAIT 15 + +# SC_IVORY_TOWERS +LOADRCT1 18 +ROTATE 3 +LOCATION 50, 77 +WAIT 15 + +RESTART diff --git a/data/title/rct1aa/script.txt b/data/title/rct1aa/script.txt new file mode 100644 index 0000000000..a3dd850a27 --- /dev/null +++ b/data/title/rct1aa/script.txt @@ -0,0 +1,187 @@ +# RollerCoaster Tycoon 1 Title Sequence + +############################## +# Added Attractions # +############################## +# SC_HAUNTED_HARBOR +LOADRCT1 45 +LOCATION 62, 53 +WAIT 11 +ROTATE 3 +LOCATION 78, 45 +WAIT 16 + +# SC_CANARY_MINES +LOADRCT1 42 +LOCATION 52, 28 +WAIT 15 + +# SC_GENTLE_GLEN +LOADRCT1 48 +LOCATION 68, 45 +WAIT 11 + +# SC_FUNTOPIA +LOADRCT1 44 +LOCATION 69, 93 +WAIT 17 + +# SC_SPRIGHTLY_PARK +LOADRCT1 51 +ROTATE 3 +LOCATION 97, 72 +WAIT 12 +ROTATE 2 +LOCATION 74, 71 +WAIT 12 +ROTATE 2 +LOCATION 67, 90 +WAIT 12 + +# SC_GIGGLE_DOWNS +LOADRCT1 65 +LOCATION 94, 64 +WAIT 10 + +# SC_SWAMP_COVE +LOADRCT1 59 +LOCATION 96, 22 +WAIT 10 +ROTATE 3 +LOCATION 90, 29 +WAIT 10 + +# SC_FRUIT_FARM +LOADRCT1 53 +LOCATION 47, 52 +WAIT 12 + +# SC_FUTURE_WORLD +LOADRCT1 47 +LOCATION 67, 59 +WAIT 19 + +# SC_THREE_MONKEYS_PARK +LOADRCT1 41 +ROTATE 2 +LOCATION 72, 61 +WAIT 8 +ROTATE 2 +LOCATION 68, 70 +WAIT 8 +LOCATION 58, 56 +WAIT 8 +ROTATE 1 +LOCATION 44, 70 +WAIT 8 +ROTATE 3 +LOCATION 43, 90 +WAIT 10 + +# SC_ROMAN_VILLAGE +LOADRCT1 58 +LOCATION 49, 46 +WAIT 15 + +# SC_ADRENALINE_HEIGHTS +LOADRCT1 60 +ROTATE 3 +LOCATION 38, 57 +WAIT 15 + +############################## +# RollerCoaster Tycoon 1 # +############################## +# SC_DIAMOND_HEIGHTS +LOADRCT1 3 +ROTATE 2 +LOCATION 47, 99 +WAIT 15 +ROTATE 2 +LOCATION 90, 48 +WAIT 15 +ROTATE 1 +LOCATION 86, 43 +WAIT 15 +ROTATE 3 +LOCATION 57, 50 +WAIT 15 +ROTATE 2 +LOCATION 86, 64 +WAIT 15 + +# SC_KATIES_DREAMLAND +LOADRCT1 7 +LOCATION 48, 44 +WAIT 15 +LOCATION 64, 41 +WAIT 15 + +# SC_POKEY_PARK, +LOADRCT1 8 +ROTATE 2 +LOCATION 56, 64 +WAIT 15 + +# SC_WHITE_WATER_PARK +LOADRCT1 9 +ROTATE 3 +LOCATION 96, 88 +WAIT 15 +LOCATION 84, 95 +WAIT 15 + +# SC_MILLENNIUM_MINES +LOADRCT1 10 +ROTATE 1 +ROTATE 1 +LOCATION 64, 37 +WAIT 15 + +# SC_KARTS_COASTERS +LOADRCT1 11 +LOCATION 84, 56 +WAIT 15 +LOCATION 34, 36 +WAIT 15 +LOCATION 33, 65 +WAIT 15 + +# SC_MELS_WORLD +LOADRCT1 12 +ROTATE 3 +LOCATION 50, 50 +WAIT 15 +LOCATION 35, 39 +WAIT 15 +ROTATE 3 +LOCATION 62, 39 +WAIT 15 + +# SC_CRUMBLY_WOODS +LOADRCT1 15 +ROTATE 3 +LOCATION 57, 94 +WAIT 15 +LOCATION 44, 84 +WAIT 15 +ROTATE 1 +LOCATION 76, 59 +WAIT 15 +LOCATION 76, 48 +WAIT 15 + +# SC_LIGHTNING_PEAKS +LOADRCT1 17 +LOCATION 80, 49 +WAIT 15 +LOCATION 60, 62 +WAIT 15 + +# SC_IVORY_TOWERS +LOADRCT1 18 +ROTATE 3 +LOCATION 50, 77 +WAIT 15 + +RESTART diff --git a/data/title/rct1aall/script.txt b/data/title/rct1aall/script.txt new file mode 100644 index 0000000000..63a64545c7 --- /dev/null +++ b/data/title/rct1aall/script.txt @@ -0,0 +1,233 @@ +# RollerCoaster Tycoon 1 Title Sequence + +############################## +# Added Attractions (part 1) # +############################## +# SC_HAUNTED_HARBOR +LOADRCT1 45 +LOCATION 62, 53 +WAIT 11 +ROTATE 3 +LOCATION 78, 45 +WAIT 16 + +# SC_CANARY_MINES +LOADRCT1 42 +LOCATION 52, 28 +WAIT 15 + +# SC_GENTLE_GLEN +LOADRCT1 48 +LOCATION 68, 45 +WAIT 11 + +# SC_FUNTOPIA +LOADRCT1 44 +LOCATION 69, 93 +WAIT 17 + +############################## +# Loopy Landscapes # +############################## +# SC_FRIGHTMARE_HILLS +LOADRCT1 86 +LOCATION 46, 47 +WAIT 5 + +# SC_GOOD_KNIGHT_PARK +LOADRCT1 30 +ROTATE 2 +LOCATION 60, 62 +WAIT 5 + +# SC_ICEBERG_ISLANDS +LOADRCT1 22 +ROTATE 3 +LOCATION 36, 52 +WAIT 4 + +# SC_SOUTHERN_SANDS +LOADRCT1 91 +ROTATE 2 +LOCATION 51, 47 +WAIT 4 + +# SC_SUNNY_SWAMPS +LOADRCT1 85 +ROTATE 3 +LOCATION 77, 82 +WAIT 4 + +# SC_VERTIGO_VIEWS +LOADRCT1 27 +LOCATION 22, 56 +WAIT 3 + +# SC_WACKY_WARREN +LOADRCT1 31 +ROTATE 3 +LOCATION 72, 80 +WAIT 4 + +############################## +# Added Attractions (part 2) # +############################## +# SC_SPRIGHTLY_PARK +LOADRCT1 51 +ROTATE 3 +LOCATION 97, 72 +WAIT 12 +ROTATE 2 +LOCATION 74, 71 +WAIT 12 +ROTATE 2 +LOCATION 67, 90 +WAIT 12 + +# SC_GIGGLE_DOWNS +LOADRCT1 65 +LOCATION 94, 64 +WAIT 10 + +# SC_SWAMP_COVE +LOADRCT1 59 +LOCATION 96, 22 +WAIT 10 +ROTATE 3 +LOCATION 90, 29 +WAIT 10 + +# SC_FRUIT_FARM +LOADRCT1 53 +LOCATION 47, 52 +WAIT 12 + +# SC_FUTURE_WORLD +LOADRCT1 47 +LOCATION 67, 59 +WAIT 19 + +# SC_THREE_MONKEYS_PARK +LOADRCT1 41 +ROTATE 2 +LOCATION 72, 61 +WAIT 8 +ROTATE 2 +LOCATION 68, 70 +WAIT 8 +LOCATION 58, 56 +WAIT 8 +ROTATE 1 +LOCATION 44, 70 +WAIT 8 +ROTATE 3 +LOCATION 43, 90 +WAIT 10 + +# SC_ROMAN_VILLAGE +LOADRCT1 58 +LOCATION 49, 46 +WAIT 15 + +# SC_ADRENALINE_HEIGHTS +LOADRCT1 60 +ROTATE 3 +LOCATION 38, 57 +WAIT 15 + +############################## +# RollerCoaster Tycoon 1 # +############################## +# SC_DIAMOND_HEIGHTS +LOADRCT1 3 +ROTATE 2 +LOCATION 47, 99 +WAIT 15 +ROTATE 2 +LOCATION 90, 48 +WAIT 15 +ROTATE 1 +LOCATION 86, 43 +WAIT 15 +ROTATE 3 +LOCATION 57, 50 +WAIT 15 +ROTATE 2 +LOCATION 86, 64 +WAIT 15 + +# SC_KATIES_DREAMLAND +LOADRCT1 7 +LOCATION 48, 44 +WAIT 15 +LOCATION 64, 41 +WAIT 15 + +# SC_POKEY_PARK, +LOADRCT1 8 +ROTATE 2 +LOCATION 56, 64 +WAIT 15 + +# SC_WHITE_WATER_PARK +LOADRCT1 9 +ROTATE 3 +LOCATION 96, 88 +WAIT 15 +LOCATION 84, 95 +WAIT 15 + +# SC_MILLENNIUM_MINES +LOADRCT1 10 +ROTATE 1 +ROTATE 1 +LOCATION 64, 37 +WAIT 15 + +# SC_KARTS_COASTERS +LOADRCT1 11 +LOCATION 84, 56 +WAIT 15 +LOCATION 34, 36 +WAIT 15 +LOCATION 33, 65 +WAIT 15 + +# SC_MELS_WORLD +LOADRCT1 12 +ROTATE 3 +LOCATION 50, 50 +WAIT 15 +LOCATION 35, 39 +WAIT 15 +ROTATE 3 +LOCATION 62, 39 +WAIT 15 + +# SC_CRUMBLY_WOODS +LOADRCT1 15 +ROTATE 3 +LOCATION 57, 94 +WAIT 15 +LOCATION 44, 84 +WAIT 15 +ROTATE 1 +LOCATION 76, 59 +WAIT 15 +LOCATION 76, 48 +WAIT 15 + +# SC_LIGHTNING_PEAKS +LOADRCT1 17 +LOCATION 80, 49 +WAIT 15 +LOCATION 60, 62 +WAIT 15 + +# SC_IVORY_TOWERS +LOADRCT1 18 +ROTATE 3 +LOCATION 50, 77 +WAIT 15 + +RESTART diff --git a/src/config.c b/src/config.c index ed5dcdd3bc..b7eb07921c 100644 --- a/src/config.c +++ b/src/config.c @@ -1407,11 +1407,23 @@ void title_sequences_set_default() platform_get_openrct_data_path(dataPath); - // Load OpenRCT2 title sequence + // RCT1 title sequence + sprintf(path, "%s%c%s%c%s%c", dataPath, sep, "title", sep, "rct1", sep); + title_sequence_open(path, language_get_string(5305)); + + // RCT1 (AA) title sequence + sprintf(path, "%s%c%s%c%s%c", dataPath, sep, "title", sep, "rct1aa", sep); + title_sequence_open(path, language_get_string(5306)); + + // RCT1 (AA + LL) title sequence + sprintf(path, "%s%c%s%c%s%c", dataPath, sep, "title", sep, "rct1aall", sep); + title_sequence_open(path, language_get_string(5307)); + + // RCT2 title sequence sprintf(path, "%s%c%s%c%s%c", dataPath, sep, "title", sep, "rct2", sep); title_sequence_open(path, language_get_string(5308)); - // Load OpenRCT2 title sequence + // OpenRCT2 title sequence sprintf(path, "%s%c%s%c%s%c", dataPath, sep, "title", sep, "openrct2", sep); title_sequence_open(path, language_get_string(5309)); } @@ -1432,12 +1444,21 @@ void title_sequences_load_presets() platform_enumerate_directories_end(dirEnumHandle); // Check which title sequence is the current one - if (_stricmp(gConfigInterface.current_title_sequence_preset, "*RCT2") == 0) { + if (_stricmp(gConfigInterface.current_title_sequence_preset, "*RCT1") == 0) { gCurrentTitleSequence = 0; } - else if (_stricmp(gConfigInterface.current_title_sequence_preset, "*OPENRCT2") == 0) { + else if (_stricmp(gConfigInterface.current_title_sequence_preset, "*RCT1AA") == 0) { gCurrentTitleSequence = 1; } + else if (_stricmp(gConfigInterface.current_title_sequence_preset, "*RCT1AALL") == 0) { + gCurrentTitleSequence = 2; + } + else if (_stricmp(gConfigInterface.current_title_sequence_preset, "*RCT2") == 0) { + gCurrentTitleSequence = 3; + } + else if (_stricmp(gConfigInterface.current_title_sequence_preset, "*OPENRCT2") == 0) { + gCurrentTitleSequence = 4; + } else { for (i = TITLE_SEQUENCE_DEFAULT_PRESETS; i < gConfigTitleSequences.num_presets; i++) { if (_stricmp(gConfigInterface.current_title_sequence_preset, gConfigTitleSequences.presets[i].name) == 0) { @@ -1567,6 +1588,9 @@ static void title_sequence_open(const char *path, const char *customName) command.command = TITLE_SCRIPT_END; } else if (_stricmp(token, "LOADMM") == 0) { command.command = TITLE_SCRIPT_LOADMM; + } else if (_stricmp(token, "LOADRCT1") == 0) { + command.command = TITLE_SCRIPT_LOADRCT1; + command.saveIndex = atoi(part1) & 0xFF; } } if (command.command != 0xFF) { diff --git a/src/interface/title_sequences.c b/src/interface/title_sequences.c index 5d3b05cbb3..af66f7e731 100644 --- a/src/interface/title_sequences.c +++ b/src/interface/title_sequences.c @@ -63,9 +63,18 @@ void title_sequence_change_preset(int preset) if (preset >= 0 && preset < gConfigTitleSequences.num_presets) { switch (preset) { case 0: - gConfigInterface.current_title_sequence_preset = "*RCT2"; + gConfigInterface.current_title_sequence_preset = "*RCT1"; break; case 1: + gConfigInterface.current_title_sequence_preset = "*RCT1AA"; + break; + case 2: + gConfigInterface.current_title_sequence_preset = "*RCT1AALL"; + break; + case 3: + gConfigInterface.current_title_sequence_preset = "*RCT2"; + break; + case 4: gConfigInterface.current_title_sequence_preset = "*OPENRCT2"; break; default: diff --git a/src/scenario.h b/src/scenario.h index a113f78460..339e4b088f 100644 --- a/src/scenario.h +++ b/src/scenario.h @@ -447,6 +447,7 @@ typedef struct { } scenario_index_entry; typedef struct { + const utf8 *title; uint8 source; sint32 index; uint8 category; @@ -485,6 +486,113 @@ void scenario_success_submit_name(const char *name); void scenario_autosave_check(); bool scenario_get_source_desc(const utf8 *name, source_desc *outDesc); +bool scenario_get_source_desc_by_id(uint8 id, source_desc *outDesc); void scenario_normalise_name(utf8 *name); +// RCT1 scenario index map +enum { + SC_UNIDENTIFIED = 255, + + // RCT + SC_FOREST_FRONTIERS = 0, + SC_DYNAMITE_DUNES, + SC_LEAFY_LAKES, + SC_DIAMOND_HEIGHTS, + SC_EVERGREEN_GARDENS, + SC_BUMBLY_BEACH, + SC_TRINITY_ISLANDS, + SC_KATIES_DREAMLAND, + SC_POKEY_PARK, + SC_WHITE_WATER_PARK, + SC_MILLENNIUM_MINES, + SC_KARTS_COASTERS, + SC_MELS_WORLD, + SC_MYSTIC_MOUNTAIN, + SC_PACIFIC_PYRAMIDS, + SC_CRUMBLY_WOODS, + SC_PARADISE_PIER, + SC_LIGHTNING_PEAKS, + SC_IVORY_TOWERS, + SC_RAINBOW_VALLEY, + SC_THUNDER_ROCK, + SC_MEGA_PARK, + + // Loopy Landscapes + SC_ICEBERG_ISLANDS, + SC_VOLCANIA, + SC_ARID_HEIGHTS, + SC_RAZOR_ROCKS, + SC_CRATER_LAKE, + SC_VERTIGO_VIEWS, + SC_PARADISE_PIER_2, + SC_DRAGONS_COVE, + SC_GOOD_KNIGHT_PARK, + SC_WACKY_WARREN, + + // Special + ALTON_TOWERS, + FORT_ANACHRONISM, + + // Added Attractions + SC_WHISPERING_CLIFFS = 40, + SC_THREE_MONKEYS_PARK, + SC_CANARY_MINES, + SC_BARONY_BRIDGE, + SC_FUNTOPIA, + SC_HAUNTED_HARBOR, + SC_FUN_FORTRESS, + SC_FUTURE_WORLD, + SC_GENTLE_GLEN, + SC_JOLLY_JUNGLE, + SC_HYDRO_HILLS, + SC_SPRIGHTLY_PARK, + SC_MAGIC_QUARTERS, + SC_FRUIT_FARM, + SC_BUTTERFLY_DAM, + SC_COASTER_CANYON, + SC_THUNDERSTORM_PARK, + SC_HARMONIC_HILLS, + SC_ROMAN_VILLAGE, + SC_SWAMP_COVE, + SC_ADRENALINE_HEIGHTS, + SC_UTOPIA, + SC_ROTTING_HEIGHTS, + SC_FIASCO_FOREST, + SC_PICKLE_PARK, + SC_GIGGLE_DOWNS, + SC_MINERAL_PARK, + SC_COASTER_CRAZY, + SC_URBAN_PARK, + SC_GEOFFREY_GARDENS, + + // Special + SC_HEIDE_PARK, + SC_PCPLAYER, + SC_PCGW, + SC_GAMEPLAY, + SC_BLACKPOOL_PLEASURE_BEACH, + + // Loopy Landscapes + SC_GRAND_GLACIER = 80, + SC_CRAZY_CRATERS, + SC_DUSTY_DESERT, + SC_WOODWORM_PARK, + SC_ICARUS_PARK, + SC_SUNNY_SWAMPS, + SC_FRIGHTMARE_HILLS, + SC_THUNDER_ROCKS, + SC_OCTAGON_PARK, + SC_PLEASURE_ISLAND, + SC_ICICLE_WORLDS, + SC_SOUTHERN_SANDS, + SC_TINY_TOWERS, + SC_NEVERMORE_PARK, + SC_PACIFICA, + SC_URBAN_JUNGLE, + SC_TERROR_TOWN, + SC_MEGAWORLD_PARK, + SC_VENUS_PONDS, + SC_MICRO_PARK, +}; + #endif diff --git a/src/scenario_sources.c b/src/scenario_sources.c index faacb06d34..f6f17083ed 100644 --- a/src/scenario_sources.c +++ b/src/scenario_sources.c @@ -16,182 +16,183 @@ const scenario_alias ScenarioAliases[] = { }; typedef struct { + const uint8 id; const utf8 *title; const uint8 category; } scenario_title_desc; // RCT const scenario_title_desc ScenarioTitlesRCT1[] = { - { "Forest Frontiers", SCENARIO_CATEGORY_BEGINNER }, - { "Dynamite Dunes", SCENARIO_CATEGORY_BEGINNER }, - { "Leafy Lake", SCENARIO_CATEGORY_BEGINNER }, - { "Diamond Heights", SCENARIO_CATEGORY_BEGINNER }, - { "Evergreen Gardens", SCENARIO_CATEGORY_BEGINNER }, - { "Bumbly Beach", SCENARIO_CATEGORY_BEGINNER }, - { "Trinity Islands", SCENARIO_CATEGORY_CHALLENGING }, - { "Katie's Dreamland", SCENARIO_CATEGORY_CHALLENGING }, - { "Pokey Park", SCENARIO_CATEGORY_CHALLENGING }, - { "White Water Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Millennium Mines", SCENARIO_CATEGORY_CHALLENGING }, - { "Karts & Coasters", SCENARIO_CATEGORY_CHALLENGING }, - { "Mel's World", SCENARIO_CATEGORY_CHALLENGING }, - { "Mystic Mountain", SCENARIO_CATEGORY_CHALLENGING }, - { "Pacific Pyramids", SCENARIO_CATEGORY_CHALLENGING }, - { "Crumbly Woods", SCENARIO_CATEGORY_CHALLENGING }, - { "Paradise Pier", SCENARIO_CATEGORY_CHALLENGING }, - { "Lightning Peaks", SCENARIO_CATEGORY_EXPERT }, - { "Ivory Towers", SCENARIO_CATEGORY_EXPERT }, - { "Rainbow Valley", SCENARIO_CATEGORY_EXPERT }, - { "Thunder Rock", SCENARIO_CATEGORY_EXPERT }, - { "Mega Park", SCENARIO_CATEGORY_OTHER }, + { SC_FOREST_FRONTIERS, "Forest Frontiers", SCENARIO_CATEGORY_BEGINNER }, + { SC_DYNAMITE_DUNES, "Dynamite Dunes", SCENARIO_CATEGORY_BEGINNER }, + { SC_LEAFY_LAKES, "Leafy Lake", SCENARIO_CATEGORY_BEGINNER }, + { SC_DIAMOND_HEIGHTS, "Diamond Heights", SCENARIO_CATEGORY_BEGINNER }, + { SC_EVERGREEN_GARDENS, "Evergreen Gardens", SCENARIO_CATEGORY_BEGINNER }, + { SC_BUMBLY_BEACH, "Bumbly Beach", SCENARIO_CATEGORY_BEGINNER }, + { SC_TRINITY_ISLANDS, "Trinity Islands", SCENARIO_CATEGORY_CHALLENGING }, + { SC_KATIES_DREAMLAND, "Katie's Dreamland", SCENARIO_CATEGORY_CHALLENGING }, + { SC_POKEY_PARK, "Pokey Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_WHITE_WATER_PARK, "White Water Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_MILLENNIUM_MINES, "Millennium Mines", SCENARIO_CATEGORY_CHALLENGING }, + { SC_KARTS_COASTERS, "Karts & Coasters", SCENARIO_CATEGORY_CHALLENGING }, + { SC_MELS_WORLD, "Mel's World", SCENARIO_CATEGORY_CHALLENGING }, + { SC_MYSTIC_MOUNTAIN, "Mystic Mountain", SCENARIO_CATEGORY_CHALLENGING }, + { SC_PACIFIC_PYRAMIDS, "Pacific Pyramids", SCENARIO_CATEGORY_CHALLENGING }, + { SC_CRUMBLY_WOODS, "Crumbly Woods", SCENARIO_CATEGORY_CHALLENGING }, + { SC_PARADISE_PIER, "Paradise Pier", SCENARIO_CATEGORY_CHALLENGING }, + { SC_LIGHTNING_PEAKS, "Lightning Peaks", SCENARIO_CATEGORY_EXPERT }, + { SC_IVORY_TOWERS, "Ivory Towers", SCENARIO_CATEGORY_EXPERT }, + { SC_RAINBOW_VALLEY, "Rainbow Valley", SCENARIO_CATEGORY_EXPERT }, + { SC_THUNDER_ROCK, "Thunder Rock", SCENARIO_CATEGORY_EXPERT }, + { SC_MEGA_PARK, "Mega Park", SCENARIO_CATEGORY_OTHER }, }; // RCT: Added Attractions const scenario_title_desc ScenarioTitlesRCT1AA[] = { - { "Whispering Cliffs", SCENARIO_CATEGORY_BEGINNER }, - { "Three Monkeys Park", SCENARIO_CATEGORY_BEGINNER }, - { "Canary Mines", SCENARIO_CATEGORY_BEGINNER }, - { "Barony Bridge", SCENARIO_CATEGORY_BEGINNER }, - { "Funtopia", SCENARIO_CATEGORY_BEGINNER }, - { "Haunted Harbor", SCENARIO_CATEGORY_BEGINNER }, - { "Fun Fortress", SCENARIO_CATEGORY_BEGINNER }, - { "Future World", SCENARIO_CATEGORY_BEGINNER }, - { "Gentle Glen", SCENARIO_CATEGORY_BEGINNER }, - { "Jolly Jungle", SCENARIO_CATEGORY_CHALLENGING }, - { "Hydro Hills", SCENARIO_CATEGORY_CHALLENGING }, - { "Sprightly Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Magic Quarters", SCENARIO_CATEGORY_CHALLENGING }, - { "Fruit Farm", SCENARIO_CATEGORY_CHALLENGING }, - { "Butterfly Dam", SCENARIO_CATEGORY_CHALLENGING }, - { "Coaster Canyon", SCENARIO_CATEGORY_CHALLENGING }, - { "Thunderstorm Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Harmonic Hills", SCENARIO_CATEGORY_CHALLENGING }, - { "Roman Village", SCENARIO_CATEGORY_CHALLENGING }, - { "Swamp Cove", SCENARIO_CATEGORY_CHALLENGING }, - { "Adrenaline Heights", SCENARIO_CATEGORY_CHALLENGING }, - { "Utopia", SCENARIO_CATEGORY_CHALLENGING }, - { "Rotting Heights", SCENARIO_CATEGORY_EXPERT }, - { "Fiasco Forest", SCENARIO_CATEGORY_EXPERT }, - { "Pickle Park", SCENARIO_CATEGORY_EXPERT }, - { "Giggle Downs", SCENARIO_CATEGORY_EXPERT }, - { "Mineral Park", SCENARIO_CATEGORY_EXPERT }, - { "Coaster Crazy", SCENARIO_CATEGORY_EXPERT }, - { "Urban Park", SCENARIO_CATEGORY_EXPERT }, - { "Geoffrey Gardens", SCENARIO_CATEGORY_EXPERT }, + { SC_WHISPERING_CLIFFS, "Whispering Cliffs", SCENARIO_CATEGORY_BEGINNER }, + { SC_THREE_MONKEYS_PARK, "Three Monkeys Park", SCENARIO_CATEGORY_BEGINNER }, + { SC_CANARY_MINES, "Canary Mines", SCENARIO_CATEGORY_BEGINNER }, + { SC_BARONY_BRIDGE, "Barony Bridge", SCENARIO_CATEGORY_BEGINNER }, + { SC_FUNTOPIA, "Funtopia", SCENARIO_CATEGORY_BEGINNER }, + { SC_HAUNTED_HARBOR, "Haunted Harbor", SCENARIO_CATEGORY_BEGINNER }, + { SC_FUN_FORTRESS, "Fun Fortress", SCENARIO_CATEGORY_BEGINNER }, + { SC_FUTURE_WORLD, "Future World", SCENARIO_CATEGORY_BEGINNER }, + { SC_GENTLE_GLEN, "Gentle Glen", SCENARIO_CATEGORY_BEGINNER }, + { SC_JOLLY_JUNGLE, "Jolly Jungle", SCENARIO_CATEGORY_CHALLENGING }, + { SC_HYDRO_HILLS, "Hydro Hills", SCENARIO_CATEGORY_CHALLENGING }, + { SC_SPRIGHTLY_PARK, "Sprightly Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_MAGIC_QUARTERS, "Magic Quarters", SCENARIO_CATEGORY_CHALLENGING }, + { SC_FRUIT_FARM, "Fruit Farm", SCENARIO_CATEGORY_CHALLENGING }, + { SC_BUTTERFLY_DAM, "Butterfly Dam", SCENARIO_CATEGORY_CHALLENGING }, + { SC_COASTER_CANYON, "Coaster Canyon", SCENARIO_CATEGORY_CHALLENGING }, + { SC_THUNDERSTORM_PARK, "Thunderstorm Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_HARMONIC_HILLS, "Harmonic Hills", SCENARIO_CATEGORY_CHALLENGING }, + { SC_ROMAN_VILLAGE, "Roman Village", SCENARIO_CATEGORY_CHALLENGING }, + { SC_SWAMP_COVE, "Swamp Cove", SCENARIO_CATEGORY_CHALLENGING }, + { SC_ADRENALINE_HEIGHTS, "Adrenaline Heights", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UTOPIA, "Utopia", SCENARIO_CATEGORY_CHALLENGING }, + { SC_ROTTING_HEIGHTS, "Rotting Heights", SCENARIO_CATEGORY_EXPERT }, + { SC_FIASCO_FOREST, "Fiasco Forest", SCENARIO_CATEGORY_EXPERT }, + { SC_PICKLE_PARK, "Pickle Park", SCENARIO_CATEGORY_EXPERT }, + { SC_GIGGLE_DOWNS, "Giggle Downs", SCENARIO_CATEGORY_EXPERT }, + { SC_MINERAL_PARK, "Mineral Park", SCENARIO_CATEGORY_EXPERT }, + { SC_COASTER_CRAZY, "Coaster Crazy", SCENARIO_CATEGORY_EXPERT }, + { SC_URBAN_PARK, "Urban Park", SCENARIO_CATEGORY_EXPERT }, + { SC_GEOFFREY_GARDENS, "Geoffrey Gardens", SCENARIO_CATEGORY_EXPERT }, }; // RCT: Loopy Landscapes const scenario_title_desc ScenarioTitlesRCT1LL[] = { - { "Iceberg Islands", SCENARIO_CATEGORY_BEGINNER }, - { "Volcania", SCENARIO_CATEGORY_BEGINNER }, - { "Arid Heights", SCENARIO_CATEGORY_BEGINNER }, - { "Razor Rocks", SCENARIO_CATEGORY_BEGINNER }, - { "Crater Lake", SCENARIO_CATEGORY_BEGINNER }, - { "Vertigo Views", SCENARIO_CATEGORY_BEGINNER }, - { "Paradise Pier 2", SCENARIO_CATEGORY_CHALLENGING }, - { "Dragon's Cove", SCENARIO_CATEGORY_CHALLENGING }, - { "Good Knight Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Wacky Warren", SCENARIO_CATEGORY_CHALLENGING }, - { "Grand Glacier", SCENARIO_CATEGORY_CHALLENGING }, - { "Crazy Craters", SCENARIO_CATEGORY_CHALLENGING }, - { "Dusty Desert", SCENARIO_CATEGORY_CHALLENGING }, - { "Woodworm Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Icarus Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Sunny Swamps", SCENARIO_CATEGORY_CHALLENGING }, - { "Frightmare Hills", SCENARIO_CATEGORY_CHALLENGING }, - { "Thunder Rocks", SCENARIO_CATEGORY_CHALLENGING }, - { "Octagon Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Pleasure Island", SCENARIO_CATEGORY_CHALLENGING }, - { "Icicle Worlds", SCENARIO_CATEGORY_CHALLENGING }, - { "Tiny Towers", SCENARIO_CATEGORY_CHALLENGING }, - { "Southern Sands", SCENARIO_CATEGORY_CHALLENGING }, - { "Nevermore Park", SCENARIO_CATEGORY_CHALLENGING }, - { "Pacifica", SCENARIO_CATEGORY_CHALLENGING }, - { "Urban Jungle", SCENARIO_CATEGORY_EXPERT }, - { "Terror Town", SCENARIO_CATEGORY_EXPERT }, - { "Megaworld Park", SCENARIO_CATEGORY_EXPERT }, - { "Venus Ponds", SCENARIO_CATEGORY_EXPERT }, - { "Micro Park", SCENARIO_CATEGORY_EXPERT }, + { SC_ICEBERG_ISLANDS, "Iceberg Islands", SCENARIO_CATEGORY_BEGINNER }, + { SC_VOLCANIA, "Volcania", SCENARIO_CATEGORY_BEGINNER }, + { SC_ARID_HEIGHTS, "Arid Heights", SCENARIO_CATEGORY_BEGINNER }, + { SC_RAZOR_ROCKS, "Razor Rocks", SCENARIO_CATEGORY_BEGINNER }, + { SC_CRATER_LAKE, "Crater Lake", SCENARIO_CATEGORY_BEGINNER }, + { SC_VERTIGO_VIEWS, "Vertigo Views", SCENARIO_CATEGORY_BEGINNER }, + { SC_PARADISE_PIER_2, "Paradise Pier 2", SCENARIO_CATEGORY_CHALLENGING }, + { SC_DRAGONS_COVE, "Dragon's Cove", SCENARIO_CATEGORY_CHALLENGING }, + { SC_GOOD_KNIGHT_PARK, "Good Knight Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_WACKY_WARREN, "Wacky Warren", SCENARIO_CATEGORY_CHALLENGING }, + { SC_GRAND_GLACIER, "Grand Glacier", SCENARIO_CATEGORY_CHALLENGING }, + { SC_CRAZY_CRATERS, "Crazy Craters", SCENARIO_CATEGORY_CHALLENGING }, + { SC_DUSTY_DESERT, "Dusty Desert", SCENARIO_CATEGORY_CHALLENGING }, + { SC_WOODWORM_PARK, "Woodworm Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_ICARUS_PARK, "Icarus Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_SUNNY_SWAMPS, "Sunny Swamps", SCENARIO_CATEGORY_CHALLENGING }, + { SC_FRIGHTMARE_HILLS, "Frightmare Hills", SCENARIO_CATEGORY_CHALLENGING }, + { SC_THUNDER_ROCKS, "Thunder Rocks", SCENARIO_CATEGORY_CHALLENGING }, + { SC_OCTAGON_PARK, "Octagon Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_PLEASURE_ISLAND, "Pleasure Island", SCENARIO_CATEGORY_CHALLENGING }, + { SC_ICICLE_WORLDS, "Icicle Worlds", SCENARIO_CATEGORY_CHALLENGING }, + { SC_SOUTHERN_SANDS, "Tiny Towers", SCENARIO_CATEGORY_CHALLENGING }, + { SC_TINY_TOWERS, "Southern Sands", SCENARIO_CATEGORY_CHALLENGING }, + { SC_NEVERMORE_PARK, "Nevermore Park", SCENARIO_CATEGORY_CHALLENGING }, + { SC_PACIFICA, "Pacifica", SCENARIO_CATEGORY_CHALLENGING }, + { SC_URBAN_JUNGLE, "Urban Jungle", SCENARIO_CATEGORY_EXPERT }, + { SC_TERROR_TOWN, "Terror Town", SCENARIO_CATEGORY_EXPERT }, + { SC_MEGAWORLD_PARK, "Megaworld Park", SCENARIO_CATEGORY_EXPERT }, + { SC_VENUS_PONDS, "Venus Ponds", SCENARIO_CATEGORY_EXPERT }, + { SC_MICRO_PARK, "Micro Park", SCENARIO_CATEGORY_EXPERT }, }; // RCT2 const scenario_title_desc ScenarioTitlesRCT2[] = { - { "Crazy Castle", SCENARIO_CATEGORY_BEGINNER }, - { "Electric Fields", SCENARIO_CATEGORY_BEGINNER }, - { "Factory Capers", SCENARIO_CATEGORY_BEGINNER }, - { "Amity Airfield", SCENARIO_CATEGORY_CHALLENGING }, - { "Botany Breakers", SCENARIO_CATEGORY_CHALLENGING }, - { "Bumbly Bazaar", SCENARIO_CATEGORY_CHALLENGING }, - { "Dusty Greens", SCENARIO_CATEGORY_CHALLENGING }, - { "Fungus Woods", SCENARIO_CATEGORY_CHALLENGING }, - { "Gravity Gardens", SCENARIO_CATEGORY_CHALLENGING }, - { "Infernal Views", SCENARIO_CATEGORY_CHALLENGING }, - { "Alpine Adventures", SCENARIO_CATEGORY_EXPERT }, - { "Extreme Heights", SCENARIO_CATEGORY_EXPERT }, - { "Ghost Town", SCENARIO_CATEGORY_EXPERT }, - { "Lucky Lake", SCENARIO_CATEGORY_EXPERT }, - { "Rainbow Summit", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Crazy Castle", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Electric Fields", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Factory Capers", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Amity Airfield", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Botany Breakers", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Bumbly Bazaar", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Dusty Greens", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Fungus Woods", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Gravity Gardens", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Infernal Views", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Alpine Adventures", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Extreme Heights", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Ghost Town", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Lucky Lake", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Rainbow Summit", SCENARIO_CATEGORY_EXPERT }, }; // RCT2: Wacky Worlds const scenario_title_desc ScenarioTitlesRCT2WW[] = { - { "Africa - Victoria Falls", SCENARIO_CATEGORY_BEGINNER }, - { "Asia - Great Wall of China Tourism Enhancement", SCENARIO_CATEGORY_BEGINNER }, - { "North America - Grand Canyon", SCENARIO_CATEGORY_BEGINNER }, - { "South America - Rio Carnival", SCENARIO_CATEGORY_BEGINNER }, - { "Africa - African Diamond Mine", SCENARIO_CATEGORY_CHALLENGING }, - { "Asia - Maharaja Palace", SCENARIO_CATEGORY_CHALLENGING }, - { "Australasia - Ayers Rock", SCENARIO_CATEGORY_CHALLENGING }, - { "Europe - European Cultural Festival", SCENARIO_CATEGORY_CHALLENGING }, - { "North America - Rollercoaster Heaven", SCENARIO_CATEGORY_CHALLENGING }, - { "South America - Inca Lost City", SCENARIO_CATEGORY_CHALLENGING }, - { "Africa - Oasis", SCENARIO_CATEGORY_EXPERT }, - { "Antarctic - Ecological Salvage", SCENARIO_CATEGORY_EXPERT }, - { "Asia - Japanese Coastal Reclaim", SCENARIO_CATEGORY_EXPERT }, - { "Australasia - Fun at the Beach", SCENARIO_CATEGORY_EXPERT }, - { "Europe - Renovation", SCENARIO_CATEGORY_EXPERT }, - { "N. America - Extreme Hawaiian Island", SCENARIO_CATEGORY_EXPERT }, - { "South America - Rain Forest Plateau", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Africa - Victoria Falls", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Asia - Great Wall of China Tourism Enhancement", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "North America - Grand Canyon", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "South America - Rio Carnival", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Africa - African Diamond Mine", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Asia - Maharaja Palace", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Australasia - Ayers Rock", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Europe - European Cultural Festival", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "North America - Rollercoaster Heaven", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "South America - Inca Lost City", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Africa - Oasis", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Antarctic - Ecological Salvage", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Asia - Japanese Coastal Reclaim", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Australasia - Fun at the Beach", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Europe - Renovation", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "N. America - Extreme Hawaiian Island", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "South America - Rain Forest Plateau", SCENARIO_CATEGORY_EXPERT }, }; // RCT2: Time Twister const scenario_title_desc ScenarioTitlesRCT2TT[] = { - { "Dark Age - Robin Hood", SCENARIO_CATEGORY_BEGINNER }, - { "Prehistoric - After the Asteroid", SCENARIO_CATEGORY_BEGINNER }, - { "Roaring Twenties - Prison Island", SCENARIO_CATEGORY_BEGINNER }, - { "Rock 'n' Roll - Flower Power", SCENARIO_CATEGORY_BEGINNER }, - { "Dark Age - Castle", SCENARIO_CATEGORY_CHALLENGING }, - { "Future - First Encounters", SCENARIO_CATEGORY_CHALLENGING }, - { "Mythological - Animatronic Film Set", SCENARIO_CATEGORY_CHALLENGING }, - { "Prehistoric - Jurassic Safari", SCENARIO_CATEGORY_CHALLENGING }, - { "Roaring Twenties - Schneider Cup", SCENARIO_CATEGORY_CHALLENGING }, - { "Future - Future World", SCENARIO_CATEGORY_EXPERT }, - { "Mythological - Cradle of Civilisation", SCENARIO_CATEGORY_EXPERT }, - { "Prehistoric - Stone Age", SCENARIO_CATEGORY_EXPERT }, - { "Roaring Twenties - Skyscrapers", SCENARIO_CATEGORY_EXPERT }, - { "Rock 'n' Roll - Rock 'n' Roll", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Dark Age - Robin Hood", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Prehistoric - After the Asteroid", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Roaring Twenties - Prison Island", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Rock 'n' Roll - Flower Power", SCENARIO_CATEGORY_BEGINNER }, + { SC_UNIDENTIFIED, "Dark Age - Castle", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Future - First Encounters", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Mythological - Animatronic Film Set", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Prehistoric - Jurassic Safari", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Roaring Twenties - Schneider Cup", SCENARIO_CATEGORY_CHALLENGING }, + { SC_UNIDENTIFIED, "Future - Future World", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Mythological - Cradle of Civilisation", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Prehistoric - Stone Age", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Roaring Twenties - Skyscrapers", SCENARIO_CATEGORY_EXPERT }, + { SC_UNIDENTIFIED, "Rock 'n' Roll - Rock 'n' Roll", SCENARIO_CATEGORY_EXPERT }, }; // Real parks const scenario_title_desc ScenarioTitlesRealParks[] = { - { "Alton Towers", SCENARIO_CATEGORY_REAL }, - { "Heide-Park", SCENARIO_CATEGORY_REAL }, - { "Blackpool Pleasure Beach", SCENARIO_CATEGORY_REAL }, - { "Six Flags Belgium", SCENARIO_CATEGORY_REAL }, - { "Six Flags Great Adventure", SCENARIO_CATEGORY_REAL }, - { "Six Flags Holland", SCENARIO_CATEGORY_REAL }, - { "Six Flags Magic Mountain", SCENARIO_CATEGORY_REAL }, - { "Six Flags over Texas", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Alton Towers", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Heide-Park", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Blackpool Pleasure Beach", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Six Flags Belgium", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Six Flags Great Adventure", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Six Flags Holland", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Six Flags Magic Mountain", SCENARIO_CATEGORY_REAL }, + { SC_UNIDENTIFIED, "Six Flags over Texas", SCENARIO_CATEGORY_REAL }, }; // Other parks const scenario_title_desc ScenarioTitlesRCT2BuildYourOwnParks[] = { - { "Build your own Six Flags Belgium", SCENARIO_CATEGORY_OTHER }, - { "Build your own Six Flags Great Adventure", SCENARIO_CATEGORY_OTHER }, - { "Build your own Six Flags Holland", SCENARIO_CATEGORY_OTHER }, - { "Build your own Six Flags Magic Mountain", SCENARIO_CATEGORY_OTHER }, - { "Build your own Six Flags Park", SCENARIO_CATEGORY_OTHER }, - { "Build your own Six Flags over Texas", SCENARIO_CATEGORY_OTHER }, + { SC_UNIDENTIFIED, "Build your own Six Flags Belgium", SCENARIO_CATEGORY_OTHER }, + { SC_UNIDENTIFIED, "Build your own Six Flags Great Adventure", SCENARIO_CATEGORY_OTHER }, + { SC_UNIDENTIFIED, "Build your own Six Flags Holland", SCENARIO_CATEGORY_OTHER }, + { SC_UNIDENTIFIED, "Build your own Six Flags Magic Mountain", SCENARIO_CATEGORY_OTHER }, + { SC_UNIDENTIFIED, "Build your own Six Flags Park", SCENARIO_CATEGORY_OTHER }, + { SC_UNIDENTIFIED, "Build your own Six Flags over Texas", SCENARIO_CATEGORY_OTHER }, }; const struct { @@ -216,6 +217,32 @@ bool scenario_get_source_desc(const utf8 *name, source_desc *outDesc) for (int j = 0; j < ScenarioTitlesBySource[i].count; j++) { const scenario_title_desc *desc = &ScenarioTitlesBySource[i].titles[j]; if (_strcmpi(name, desc->title) == 0) { + outDesc->title = desc->title; + outDesc->source = i; + outDesc->index = currentIndex; + outDesc->category = desc->category; + return true; + } + currentIndex++; + } + } + + outDesc->source = SCENARIO_SOURCE_OTHER; + outDesc->index = -1; + outDesc->category = SCENARIO_CATEGORY_OTHER; + return false; +} + +bool scenario_get_source_desc_by_id(uint8 id, source_desc *outDesc) +{ + assert(outDesc != NULL); + + sint32 currentIndex = 0; + for (int i = 0; i < countof(ScenarioTitlesBySource); i++) { + for (int j = 0; j < ScenarioTitlesBySource[i].count; j++) { + const scenario_title_desc *desc = &ScenarioTitlesBySource[i].titles[j]; + if (id == desc->id) { + outDesc->title = desc->title; outDesc->source = i; outDesc->index = currentIndex; outDesc->category = desc->category; diff --git a/src/title.c b/src/title.c index 33d6007ffe..9a982c8b58 100644 --- a/src/title.c +++ b/src/title.c @@ -64,6 +64,7 @@ rct_xy16 _titleScriptCurrentCentralPosition = { -1, -1 }; #define ZOOM(d) TITLE_SCRIPT_ZOOM, d #define RESTART() TITLE_SCRIPT_RESTART #define LOAD(i) TITLE_SCRIPT_LOAD, i +#define LOADRCT1(i) TITLE_SCRIPT_LOADRCT1, i static const uint8 _magicMountainScript[] = { LOADMM(), @@ -422,6 +423,38 @@ static void title_do_next_script_opcode() } } break; + case TITLE_SCRIPT_LOADRCT1: + script_operand = (*_currentScript++); + + source_desc sourceDesc; + if (!scenario_get_source_desc_by_id(script_operand, &sourceDesc) || sourceDesc.index == -1) { + log_fatal("Invalid scenario id."); + exit(-1); + } + + const utf8 *path = NULL; + for (int i = 0; i < gScenarioListCount; i++) { + if (gScenarioList[i].source_index == sourceDesc.index) { + path = gScenarioList[i].path; + break; + } + } + + if (path == NULL || !title_load_park(path)) { + script_opcode = *_currentScript; + while (script_opcode != TITLE_SCRIPT_LOADRCT1 && script_opcode != TITLE_SCRIPT_RESTART && script_opcode != TITLE_SCRIPT_END) { + title_skip_opcode(); + script_opcode = *_currentScript; + } + if (script_opcode == TITLE_SCRIPT_RESTART) { + title_sequence_change_preset(4); + title_refresh_sequence(); + config_save_default(); + return; + } + } + gTitleScriptSave = 0xFF; + break; } window_invalidate_by_class(WC_TITLE_EDITOR); } @@ -688,6 +721,9 @@ bool title_refresh_sequence() hasInvalidSave = true; hasLoad = true; } + else if (title->commands[i].command == TITLE_SCRIPT_LOADRCT1) { + hasLoad = true; + } else if (title->commands[i].command == TITLE_SCRIPT_LOADMM) { hasLoad = true; } @@ -711,6 +747,9 @@ bool title_refresh_sequence() for (int i = 0; i < title->num_commands; i++) { *scriptPtr++ = title->commands[i].command; switch (title->commands[i].command) { + case TITLE_SCRIPT_LOADRCT1: + *scriptPtr++ = title->commands[i].saveIndex; + break; case TITLE_SCRIPT_LOAD: src = title->saves[title->commands[i].saveIndex]; do { diff --git a/src/title.h b/src/title.h index 924bb738eb..88270393ee 100644 --- a/src/title.h +++ b/src/title.h @@ -34,7 +34,8 @@ enum { TITLE_SCRIPT_END, TITLE_SCRIPT_SPEED, TITLE_SCRIPT_LOOP, - TITLE_SCRIPT_ENDLOOP + TITLE_SCRIPT_ENDLOOP, + TITLE_SCRIPT_LOADRCT1, }; extern sint32 gTitleScriptCommand; diff --git a/src/windows/options.c b/src/windows/options.c index 213f7306e1..40b19f12c1 100644 --- a/src/windows/options.c +++ b/src/windows/options.c @@ -996,15 +996,14 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget* gDropdownItemsArgs[i] = (uint32)&gConfigTitleSequences.presets[i].name; } - window_dropdown_show_text_custom_width( + window_dropdown_show_text( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, w->colours[1], DROPDOWN_FLAG_STAY_OPEN, - num_items, - widget->right - widget->left - 3 - ); + num_items + ); dropdown_set_checked(gCurrentPreviewTitleSequence, true); break;