1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-17 21:12:34 +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;
s6Info->editor_step = EDITOR_STEP_OBJECTIVE_SELECTION;
s6Info->category = SCENARIO_CATEGORY_BUILDYOUROWN;
s6Info->category = SCENARIO_CATEGORY_OTHER;
viewport_init_all();
news_item_init_queue();
window_editor_main_open();
@@ -328,7 +328,7 @@ static int editor_read_s6(const char *path)
s6Info->editor_step = EDITOR_STEP_LANDSCAPE_EDITOR;
} else {
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);
}

View File

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

View File

@@ -167,11 +167,15 @@ static void scenario_list_add(const utf8 *path, uint64 timestamp)
scenario_normalise_name(newEntry->name);
// Look up and store information regarding the origins of this scenario.
scenario_source source;
sint32 index;
scenario_get_index_and_source(newEntry->name, &source, &index);
newEntry->source_index = index;
newEntry->source_game = source;
source_desc desc;
if (scenario_get_source_desc(newEntry->name, &desc)) {
newEntry->source_index = desc.index;
newEntry->source_game = desc.source;
newEntry->category = desc.category;
} else {
newEntry->source_index = -1;
newEntry->source_game = SCENARIO_SOURCE_OTHER;
}
// Translate scenario name and details
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;
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;
}

View File

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