1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-21 06:43:04 +01:00

hardcode difficulty for original scenarios

This commit is contained in:
IntelOrca
2016-01-01 13:29:13 +00:00
parent 950722292c
commit 6747f20238
4 changed files with 191 additions and 167 deletions

View File

@@ -138,7 +138,7 @@ void editor_convert_save_to_scenario_callback(int result)
RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) = SCREEN_FLAGS_SCENARIO_EDITOR; RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) = SCREEN_FLAGS_SCENARIO_EDITOR;
s6Info->editor_step = EDITOR_STEP_OBJECTIVE_SELECTION; s6Info->editor_step = EDITOR_STEP_OBJECTIVE_SELECTION;
s6Info->category = SCENARIO_CATEGORY_BUILDYOUROWN; s6Info->category = SCENARIO_CATEGORY_OTHER;
viewport_init_all(); viewport_init_all();
news_item_init_queue(); news_item_init_queue();
window_editor_main_open(); window_editor_main_open();
@@ -328,7 +328,7 @@ static int editor_read_s6(const char *path)
s6Info->editor_step = EDITOR_STEP_LANDSCAPE_EDITOR; s6Info->editor_step = EDITOR_STEP_LANDSCAPE_EDITOR;
} else { } else {
s6Info->editor_step = EDITOR_STEP_LANDSCAPE_EDITOR; s6Info->editor_step = EDITOR_STEP_LANDSCAPE_EDITOR;
s6Info->category = SCENARIO_CATEGORY_BUILDYOUROWN; s6Info->category = SCENARIO_CATEGORY_OTHER;
format_string(s6Info->details, STR_NO_DETAILS_YET, NULL); format_string(s6Info->details, STR_NO_DETAILS_YET, NULL);
} }

View File

@@ -402,7 +402,7 @@ enum {
SCENARIO_CATEGORY_CHALLENGING, SCENARIO_CATEGORY_CHALLENGING,
SCENARIO_CATEGORY_EXPERT, SCENARIO_CATEGORY_EXPERT,
SCENARIO_CATEGORY_REAL, SCENARIO_CATEGORY_REAL,
SCENARIO_CATEGORY_BUILDYOUROWN SCENARIO_CATEGORY_OTHER
}; };
enum { enum {
@@ -446,6 +446,12 @@ typedef struct {
utf8 details[256]; utf8 details[256];
} scenario_index_entry; } scenario_index_entry;
typedef struct {
uint8 source;
sint32 index;
uint8 category;
} source_desc;
// Scenario list // Scenario list
extern int gScenarioListCount; extern int gScenarioListCount;
extern int gScenarioListCapacity; extern int gScenarioListCapacity;
@@ -478,7 +484,7 @@ void scenario_success();
void scenario_success_submit_name(const char *name); void scenario_success_submit_name(const char *name);
void scenario_autosave_check(); void scenario_autosave_check();
bool scenario_get_index_and_source(const utf8 *name, scenario_source *source, sint32 *index); bool scenario_get_source_desc(const utf8 *name, source_desc *outDesc);
void scenario_normalise_name(utf8 *name); void scenario_normalise_name(utf8 *name);
#endif #endif

View File

@@ -167,11 +167,15 @@ static void scenario_list_add(const utf8 *path, uint64 timestamp)
scenario_normalise_name(newEntry->name); scenario_normalise_name(newEntry->name);
// Look up and store information regarding the origins of this scenario. // Look up and store information regarding the origins of this scenario.
scenario_source source; source_desc desc;
sint32 index; if (scenario_get_source_desc(newEntry->name, &desc)) {
scenario_get_index_and_source(newEntry->name, &source, &index); newEntry->source_index = desc.index;
newEntry->source_index = index; newEntry->source_game = desc.source;
newEntry->source_game = source; newEntry->category = desc.category;
} else {
newEntry->source_index = -1;
newEntry->source_game = SCENARIO_SOURCE_OTHER;
}
// Translate scenario name and details // Translate scenario name and details
utf8 filenameWithoutExtension[MAX_PATH]; utf8 filenameWithoutExtension[MAX_PATH];
@@ -235,7 +239,11 @@ static int scenario_list_sort_by_index(const void *a, const void *b)
const scenario_index_entry *entryB = (const scenario_index_entry*)b; const scenario_index_entry *entryB = (const scenario_index_entry*)b;
if (entryA->source_game == SCENARIO_SOURCE_OTHER && entryB->source_game == SCENARIO_SOURCE_OTHER) { if (entryA->source_game == SCENARIO_SOURCE_OTHER && entryB->source_game == SCENARIO_SOURCE_OTHER) {
return scenario_list_sort_by_name(a, b); if (entryA->category == entryB->category) {
return scenario_list_sort_by_name(a, b);
} else {
return entryA->category - entryB->category;
}
} }
return entryA->source_index - entryB->source_index; return entryA->source_index - entryB->source_index;
} }

View File

@@ -15,183 +15,188 @@ const scenario_alias ScenarioAliases[] = {
{ "Paradise Pier 2", "Big Pier 2" }, { "Paradise Pier 2", "Big Pier 2" },
}; };
typedef struct {
const utf8 *title;
const uint8 category;
} scenario_title_desc;
// RCT // RCT
const utf8 * const ScenarioTitlesRCT1[] = { const scenario_title_desc ScenarioTitlesRCT1[] = {
"Forest Frontiers", { "Forest Frontiers", SCENARIO_CATEGORY_BEGINNER },
"Dynamite Dunes", { "Dynamite Dunes", SCENARIO_CATEGORY_BEGINNER },
"Leafy Lake", { "Leafy Lake", SCENARIO_CATEGORY_BEGINNER },
"Diamond Heights", { "Diamond Heights", SCENARIO_CATEGORY_BEGINNER },
"Evergreen Gardens", { "Evergreen Gardens", SCENARIO_CATEGORY_BEGINNER },
"Bumbly Beach", { "Bumbly Beach", SCENARIO_CATEGORY_BEGINNER },
"Trinity Islands", { "Trinity Islands", SCENARIO_CATEGORY_CHALLENGING },
"Katie's Dreamland", { "Katie's Dreamland", SCENARIO_CATEGORY_CHALLENGING },
"Pokey Park", { "Pokey Park", SCENARIO_CATEGORY_CHALLENGING },
"White Water Park", { "White Water Park", SCENARIO_CATEGORY_CHALLENGING },
"Millennium Mines", { "Millennium Mines", SCENARIO_CATEGORY_CHALLENGING },
"Karts & Coasters", { "Karts & Coasters", SCENARIO_CATEGORY_CHALLENGING },
"Mel's World", { "Mel's World", SCENARIO_CATEGORY_CHALLENGING },
"Mystic Mountain", { "Mystic Mountain", SCENARIO_CATEGORY_CHALLENGING },
"Pacific Pyramids", { "Pacific Pyramids", SCENARIO_CATEGORY_CHALLENGING },
"Crumbly Woods", { "Crumbly Woods", SCENARIO_CATEGORY_CHALLENGING },
"Paradise Pier", { "Paradise Pier", SCENARIO_CATEGORY_CHALLENGING },
"Lightning Peaks", { "Lightning Peaks", SCENARIO_CATEGORY_EXPERT },
"Ivory Towers", { "Ivory Towers", SCENARIO_CATEGORY_EXPERT },
"Rainbow Valley", { "Rainbow Valley", SCENARIO_CATEGORY_EXPERT },
"Thunder Rock", { "Thunder Rock", SCENARIO_CATEGORY_EXPERT },
"Mega Park", { "Mega Park", SCENARIO_CATEGORY_OTHER },
}; };
// RCT: Added Attractions // RCT: Added Attractions
const utf8 * const ScenarioTitlesRCT1AA[] = { const scenario_title_desc ScenarioTitlesRCT1AA[] = {
"Whispering Cliffs", { "Whispering Cliffs", SCENARIO_CATEGORY_BEGINNER },
"Three Monkeys Park", { "Three Monkeys Park", SCENARIO_CATEGORY_BEGINNER },
"Canary Mines", { "Canary Mines", SCENARIO_CATEGORY_BEGINNER },
"Barony Bridge", { "Barony Bridge", SCENARIO_CATEGORY_BEGINNER },
"Funtopia", { "Funtopia", SCENARIO_CATEGORY_BEGINNER },
"Haunted Harbor", { "Haunted Harbor", SCENARIO_CATEGORY_BEGINNER },
"Fun Fortress", { "Fun Fortress", SCENARIO_CATEGORY_BEGINNER },
"Future World", { "Future World", SCENARIO_CATEGORY_BEGINNER },
"Gentle Glen", { "Gentle Glen", SCENARIO_CATEGORY_BEGINNER },
"Jolly Jungle", { "Jolly Jungle", SCENARIO_CATEGORY_CHALLENGING },
"Hydro Hills", { "Hydro Hills", SCENARIO_CATEGORY_CHALLENGING },
"Sprightly Park", { "Sprightly Park", SCENARIO_CATEGORY_CHALLENGING },
"Magic Quarters", { "Magic Quarters", SCENARIO_CATEGORY_CHALLENGING },
"Fruit Farm", { "Fruit Farm", SCENARIO_CATEGORY_CHALLENGING },
"Butterfly Dam", { "Butterfly Dam", SCENARIO_CATEGORY_CHALLENGING },
"Coaster Canyon", { "Coaster Canyon", SCENARIO_CATEGORY_CHALLENGING },
"Thunderstorm Park", { "Thunderstorm Park", SCENARIO_CATEGORY_CHALLENGING },
"Harmonic Hills", { "Harmonic Hills", SCENARIO_CATEGORY_CHALLENGING },
"Roman Village", { "Roman Village", SCENARIO_CATEGORY_CHALLENGING },
"Swamp Cove", { "Swamp Cove", SCENARIO_CATEGORY_CHALLENGING },
"Adrenaline Heights", { "Adrenaline Heights", SCENARIO_CATEGORY_CHALLENGING },
"Utopia", { "Utopia", SCENARIO_CATEGORY_CHALLENGING },
"Rotting Heights", { "Rotting Heights", SCENARIO_CATEGORY_EXPERT },
"Fiasco Forest", { "Fiasco Forest", SCENARIO_CATEGORY_EXPERT },
"Pickle Park", { "Pickle Park", SCENARIO_CATEGORY_EXPERT },
"Giggle Downs", { "Giggle Downs", SCENARIO_CATEGORY_EXPERT },
"Mineral Park", { "Mineral Park", SCENARIO_CATEGORY_EXPERT },
"Coaster Crazy", { "Coaster Crazy", SCENARIO_CATEGORY_EXPERT },
"Urban Park", { "Urban Park", SCENARIO_CATEGORY_EXPERT },
"Geoffrey Gardens", { "Geoffrey Gardens", SCENARIO_CATEGORY_EXPERT },
}; };
// RCT: Loopy Landscapes // RCT: Loopy Landscapes
const utf8 * const ScenarioTitlesRCT1LL[] = { const scenario_title_desc ScenarioTitlesRCT1LL[] = {
"Iceberg Islands", { "Iceberg Islands", SCENARIO_CATEGORY_BEGINNER },
"Volcania", { "Volcania", SCENARIO_CATEGORY_BEGINNER },
"Arid Heights", { "Arid Heights", SCENARIO_CATEGORY_BEGINNER },
"Razor Rocks", { "Razor Rocks", SCENARIO_CATEGORY_BEGINNER },
"Crater Lake", { "Crater Lake", SCENARIO_CATEGORY_BEGINNER },
"Vertigo Views", { "Vertigo Views", SCENARIO_CATEGORY_BEGINNER },
"Paradise Pier 2", { "Paradise Pier 2", SCENARIO_CATEGORY_CHALLENGING },
"Dragon's Cove", { "Dragon's Cove", SCENARIO_CATEGORY_CHALLENGING },
"Good Knight Park", { "Good Knight Park", SCENARIO_CATEGORY_CHALLENGING },
"Wacky Warren", { "Wacky Warren", SCENARIO_CATEGORY_CHALLENGING },
"Grand Glacier", { "Grand Glacier", SCENARIO_CATEGORY_CHALLENGING },
"Crazy Craters", { "Crazy Craters", SCENARIO_CATEGORY_CHALLENGING },
"Dusty Desert", { "Dusty Desert", SCENARIO_CATEGORY_CHALLENGING },
"Woodworm Park", { "Woodworm Park", SCENARIO_CATEGORY_CHALLENGING },
"Icarus Park", { "Icarus Park", SCENARIO_CATEGORY_CHALLENGING },
"Sunny Swamps", { "Sunny Swamps", SCENARIO_CATEGORY_CHALLENGING },
"Frightmare Hills", { "Frightmare Hills", SCENARIO_CATEGORY_CHALLENGING },
"Thunder Rocks", { "Thunder Rocks", SCENARIO_CATEGORY_CHALLENGING },
"Octagon Park", { "Octagon Park", SCENARIO_CATEGORY_CHALLENGING },
"Pleasure Island", { "Pleasure Island", SCENARIO_CATEGORY_CHALLENGING },
"Icicle Worlds", { "Icicle Worlds", SCENARIO_CATEGORY_CHALLENGING },
"Tiny Towers", { "Tiny Towers", SCENARIO_CATEGORY_CHALLENGING },
"Southern Sands", { "Southern Sands", SCENARIO_CATEGORY_CHALLENGING },
"Nevermore Park", { "Nevermore Park", SCENARIO_CATEGORY_CHALLENGING },
"Pacifica", { "Pacifica", SCENARIO_CATEGORY_CHALLENGING },
"Urban Jungle", { "Urban Jungle", SCENARIO_CATEGORY_EXPERT },
"Terror Town", { "Terror Town", SCENARIO_CATEGORY_EXPERT },
"Megaworld Park", { "Megaworld Park", SCENARIO_CATEGORY_EXPERT },
"Venus Ponds", { "Venus Ponds", SCENARIO_CATEGORY_EXPERT },
"Micro Park", { "Micro Park", SCENARIO_CATEGORY_EXPERT },
}; };
// RCT2 // RCT2
const utf8 * const ScenarioTitlesRCT2[] = { const scenario_title_desc ScenarioTitlesRCT2[] = {
"Crazy Castle", { "Crazy Castle", SCENARIO_CATEGORY_BEGINNER },
"Electric Fields", { "Electric Fields", SCENARIO_CATEGORY_BEGINNER },
"Factory Capers", { "Factory Capers", SCENARIO_CATEGORY_BEGINNER },
"Amity Airfield", { "Amity Airfield", SCENARIO_CATEGORY_CHALLENGING },
"Botany Breakers", { "Botany Breakers", SCENARIO_CATEGORY_CHALLENGING },
"Bumbly Bazaar", { "Bumbly Bazaar", SCENARIO_CATEGORY_CHALLENGING },
"Dusty Greens", { "Dusty Greens", SCENARIO_CATEGORY_CHALLENGING },
"Fungus Woods", { "Fungus Woods", SCENARIO_CATEGORY_CHALLENGING },
"Gravity Gardens", { "Gravity Gardens", SCENARIO_CATEGORY_CHALLENGING },
"Infernal Views", { "Infernal Views", SCENARIO_CATEGORY_CHALLENGING },
"Alpine Adventures", { "Alpine Adventures", SCENARIO_CATEGORY_EXPERT },
"Extreme Heights", { "Extreme Heights", SCENARIO_CATEGORY_EXPERT },
"Ghost Town", { "Ghost Town", SCENARIO_CATEGORY_EXPERT },
"Lucky Lake", { "Lucky Lake", SCENARIO_CATEGORY_EXPERT },
"Rainbow Summit", { "Rainbow Summit", SCENARIO_CATEGORY_EXPERT },
}; };
// RCT2: Wacky Worlds // RCT2: Wacky Worlds
const utf8 * const ScenarioTitlesRCT2WW[] = { const scenario_title_desc ScenarioTitlesRCT2WW[] = {
"Africa - Victoria Falls", { "Africa - Victoria Falls", SCENARIO_CATEGORY_BEGINNER },
"Asia - Great Wall of China Tourism Enhancement", { "Asia - Great Wall of China Tourism Enhancement", SCENARIO_CATEGORY_BEGINNER },
"North America - Grand Canyon", { "North America - Grand Canyon", SCENARIO_CATEGORY_BEGINNER },
"South America - Rio Carnival", { "South America - Rio Carnival", SCENARIO_CATEGORY_BEGINNER },
"Africa - African Diamond Mine", { "Africa - African Diamond Mine", SCENARIO_CATEGORY_CHALLENGING },
"Asia - Maharaja Palace", { "Asia - Maharaja Palace", SCENARIO_CATEGORY_CHALLENGING },
"Australasia - Ayers Rock", { "Australasia - Ayers Rock", SCENARIO_CATEGORY_CHALLENGING },
"Europe - European Cultural Festival", { "Europe - European Cultural Festival", SCENARIO_CATEGORY_CHALLENGING },
"North America - Rollercoaster Heaven", { "North America - Rollercoaster Heaven", SCENARIO_CATEGORY_CHALLENGING },
"South America - Inca Lost City", { "South America - Inca Lost City", SCENARIO_CATEGORY_CHALLENGING },
"Africa - Oasis", { "Africa - Oasis", SCENARIO_CATEGORY_EXPERT },
"Antarctic - Ecological Salvage", { "Antarctic - Ecological Salvage", SCENARIO_CATEGORY_EXPERT },
"Asia - Japanese Coastal Reclaim", { "Asia - Japanese Coastal Reclaim", SCENARIO_CATEGORY_EXPERT },
"Australasia - Fun at the Beach", { "Australasia - Fun at the Beach", SCENARIO_CATEGORY_EXPERT },
"Europe - Renovation", { "Europe - Renovation", SCENARIO_CATEGORY_EXPERT },
"N. America - Extreme Hawaiian Island", { "N. America - Extreme Hawaiian Island", SCENARIO_CATEGORY_EXPERT },
"South America - Rain Forest Plateau", { "South America - Rain Forest Plateau", SCENARIO_CATEGORY_EXPERT },
}; };
// RCT2: Time Twister // RCT2: Time Twister
const utf8 * const ScenarioTitlesRCT2TT[] = { const scenario_title_desc ScenarioTitlesRCT2TT[] = {
"Dark Age - Robin Hood", { "Dark Age - Robin Hood", SCENARIO_CATEGORY_BEGINNER },
"Prehistoric - After the Asteroid", { "Prehistoric - After the Asteroid", SCENARIO_CATEGORY_BEGINNER },
"Roaring Twenties - Prison Island", { "Roaring Twenties - Prison Island", SCENARIO_CATEGORY_BEGINNER },
"Rock 'n' Roll - Flower Power", { "Rock 'n' Roll - Flower Power", SCENARIO_CATEGORY_BEGINNER },
"Dark Age - Castle", { "Dark Age - Castle", SCENARIO_CATEGORY_CHALLENGING },
"Future - First Encounters", { "Future - First Encounters", SCENARIO_CATEGORY_CHALLENGING },
"Mythological - Animatronic Film Set", { "Mythological - Animatronic Film Set", SCENARIO_CATEGORY_CHALLENGING },
"Prehistoric - Jurassic Safari", { "Prehistoric - Jurassic Safari", SCENARIO_CATEGORY_CHALLENGING },
"Roaring Twenties - Schneider Cup", { "Roaring Twenties - Schneider Cup", SCENARIO_CATEGORY_CHALLENGING },
"Future - Future World", { "Future - Future World", SCENARIO_CATEGORY_EXPERT },
"Mythological - Cradle of Civilisation", { "Mythological - Cradle of Civilisation", SCENARIO_CATEGORY_EXPERT },
"Prehistoric - Stone Age", { "Prehistoric - Stone Age", SCENARIO_CATEGORY_EXPERT },
"Roaring Twenties - Skyscrapers", { "Roaring Twenties - Skyscrapers", SCENARIO_CATEGORY_EXPERT },
"Rock 'n' Roll - Rock 'n' Roll", { "Rock 'n' Roll - Rock 'n' Roll", SCENARIO_CATEGORY_EXPERT },
}; };
// Real parks // Real parks
const utf8 * const ScenarioTitlesRealParks[] = { const scenario_title_desc ScenarioTitlesRealParks[] = {
"Alton Towers", { "Alton Towers", SCENARIO_CATEGORY_REAL },
"Heide-Park", { "Heide-Park", SCENARIO_CATEGORY_REAL },
"Blackpool Pleasure Beach", { "Blackpool Pleasure Beach", SCENARIO_CATEGORY_REAL },
"Six Flags Belgium", { "Six Flags Belgium", SCENARIO_CATEGORY_REAL },
"Six Flags Great Adventure", { "Six Flags Great Adventure", SCENARIO_CATEGORY_REAL },
"Six Flags Holland", { "Six Flags Holland", SCENARIO_CATEGORY_REAL },
"Six Flags Magic Mountain", { "Six Flags Magic Mountain", SCENARIO_CATEGORY_REAL },
"Six Flags over Texas", { "Six Flags over Texas", SCENARIO_CATEGORY_REAL },
}; };
// Other parks // Other parks
const utf8 * const ScenarioTitlesRCT2BuildYourOwnParks[] = { const scenario_title_desc ScenarioTitlesRCT2BuildYourOwnParks[] = {
"Build your own Six Flags Belgium", { "Build your own Six Flags Belgium", SCENARIO_CATEGORY_OTHER },
"Build your own Six Flags Great Adventure", { "Build your own Six Flags Great Adventure", SCENARIO_CATEGORY_OTHER },
"Build your own Six Flags Holland", { "Build your own Six Flags Holland", SCENARIO_CATEGORY_OTHER },
"Build your own Six Flags Magic Mountain", { "Build your own Six Flags Magic Mountain", SCENARIO_CATEGORY_OTHER },
"Build your own Six Flags Park", { "Build your own Six Flags Park", SCENARIO_CATEGORY_OTHER },
"Build your own Six Flags over Texas", { "Build your own Six Flags over Texas", SCENARIO_CATEGORY_OTHER },
}; };
const struct { const struct {
int count; int count;
const utf8 * const * titles; const scenario_title_desc * const titles;
} ScenarioTitlesBySource[] = { } ScenarioTitlesBySource[] = {
{ countof(ScenarioTitlesRCT1), ScenarioTitlesRCT1 }, { countof(ScenarioTitlesRCT1), ScenarioTitlesRCT1 },
{ countof(ScenarioTitlesRCT1AA), ScenarioTitlesRCT1AA }, { countof(ScenarioTitlesRCT1AA), ScenarioTitlesRCT1AA },
@@ -202,22 +207,27 @@ const struct {
{ countof(ScenarioTitlesRealParks), ScenarioTitlesRealParks }, { countof(ScenarioTitlesRealParks), ScenarioTitlesRealParks },
}; };
bool scenario_get_index_and_source(const utf8 *name, scenario_source *source, sint32 *index) bool scenario_get_source_desc(const utf8 *name, source_desc *outDesc)
{ {
assert(outDesc != NULL);
sint32 currentIndex = 0; sint32 currentIndex = 0;
for (int i = 0; i < countof(ScenarioTitlesBySource); i++) { for (int i = 0; i < countof(ScenarioTitlesBySource); i++) {
for (int j = 0; j < ScenarioTitlesBySource[i].count; j++) { for (int j = 0; j < ScenarioTitlesBySource[i].count; j++) {
if (_strcmpi(name, ScenarioTitlesBySource[i].titles[j]) == 0) { const scenario_title_desc *desc = &ScenarioTitlesBySource[i].titles[j];
*source = (scenario_source)i; if (_strcmpi(name, desc->title) == 0) {
*index = currentIndex; outDesc->source = i;
outDesc->index = currentIndex;
outDesc->category = desc->category;
return true; return true;
} }
currentIndex++; currentIndex++;
} }
} }
*source = SCENARIO_SOURCE_OTHER; outDesc->source = SCENARIO_SOURCE_OTHER;
*index = -1; outDesc->index = -1;
outDesc->category = SCENARIO_CATEGORY_OTHER;
return false; return false;
} }