From ef7dd837350452468838bcacbd30ffe5516c10da Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 23 Apr 2016 17:53:25 +0100 Subject: [PATCH] add pointer variables for scenario name and details --- src/editor.c | 6 +++--- src/game.c | 4 ++-- src/scenario.c | 16 ++++++++-------- src/scenario.h | 2 ++ src/windows/park.c | 2 +- 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/editor.c b/src/editor.c index 0bf89470f8..03e1dd041e 100644 --- a/src/editor.c +++ b/src/editor.c @@ -92,7 +92,7 @@ void editor_load() gfx_invalidate_screen(); gScreenAge = 0; - safe_strcpy((char*)RCT2_ADDRESS_SCENARIO_NAME, language_get_string(2749), 0x40); + safe_strcpy(gScenarioName, language_get_string(2749), 64); } /** @@ -120,8 +120,8 @@ void editor_convert_save_to_scenario_callback(int result) gParkFlags &= ~PARK_FLAGS_NO_MONEY_SCENARIO; gParkFlags |= PARK_FLAGS_NO_MONEY; - safe_strcpy(s6Info->name, (const char*)RCT2_ADDRESS_SCENARIO_NAME, 64); - safe_strcpy(s6Info->details, (const char*)RCT2_ADDRESS_SCENARIO_DETAILS, 256); + safe_strcpy(s6Info->name, gScenarioName, 64); + safe_strcpy(s6Info->details, gScenarioDetails, 256); s6Info->objective_type = gScenarioObjectiveType; s6Info->objective_arg_1 = gScenarioObjectiveYear; s6Info->objective_arg_2 = gScenarioObjectiveCurrency; diff --git a/src/game.c b/src/game.c index 92b8723ffe..3aabbadc22 100644 --- a/src/game.c +++ b/src/game.c @@ -680,8 +680,8 @@ void game_convert_strings_to_utf8() { // Scenario details rct2_to_utf8_self(RCT2_ADDRESS(RCT2_ADDRESS_SCENARIO_COMPLETED_BY, char), 32); - rct2_to_utf8_self(RCT2_ADDRESS(RCT2_ADDRESS_SCENARIO_NAME, char), 64); - rct2_to_utf8_self(RCT2_ADDRESS(RCT2_ADDRESS_SCENARIO_DETAILS, char), 256); + rct2_to_utf8_self(gScenarioName, 64); + rct2_to_utf8_self(gScenarioDetails, 256); // User strings for (int i = 0; i < MAX_USER_STRINGS; i++) { diff --git a/src/scenario.c b/src/scenario.c index 03c122d3e3..d185bb5059 100644 --- a/src/scenario.c +++ b/src/scenario.c @@ -61,6 +61,8 @@ const rct_string_id ScenarioCategoryStringIds[SCENARIO_CATEGORY_COUNT] = { static char _scenarioPath[MAX_PATH]; static const char *_scenarioFileName = ""; +char *gScenarioName = RCT2_ADDRESS(RCT2_ADDRESS_SCENARIO_NAME, char); +char *gScenarioDetails = RCT2_ADDRESS(RCT2_ADDRESS_SCENARIO_DETAILS, char); char gScenarioSavePath[MAX_PATH]; int gFirstTimeSave = 1; uint32 gLastAutoSaveTick = 0; @@ -285,8 +287,8 @@ void scenario_begin() finance_update_loan_hash(); - safe_strcpy((char*)RCT2_ADDRESS_SCENARIO_DETAILS, s6Info->details, 256); - safe_strcpy((char*)RCT2_ADDRESS_SCENARIO_NAME, s6Info->name, 64); + safe_strcpy(gScenarioDetails, s6Info->details, 256); + safe_strcpy(gScenarioName, s6Info->name, 64); { utf8 normalisedName[64]; @@ -296,13 +298,13 @@ void scenario_begin() rct_string_id localisedStringIds[3]; if (language_get_localised_scenario_strings(normalisedName, localisedStringIds)) { if (localisedStringIds[0] != STR_NONE) { - safe_strcpy((char*)RCT2_ADDRESS_SCENARIO_NAME, language_get_string(localisedStringIds[0]), 32); + safe_strcpy(gScenarioName, language_get_string(localisedStringIds[0]), 32); } if (localisedStringIds[1] != STR_NONE) { park_set_name(language_get_string(localisedStringIds[1])); } if (localisedStringIds[2] != STR_NONE) { - safe_strcpy((char*)RCT2_ADDRESS_SCENARIO_DETAILS, language_get_string(localisedStringIds[2]), 256); + safe_strcpy(gScenarioDetails, language_get_string(localisedStringIds[2]), 256); } } else { rct_stex_entry* stex = g_stexEntries[0]; @@ -315,13 +317,11 @@ void scenario_begin() // Set localised scenario name format_string(buffer, stex->scenario_name, 0); - safe_strcpy((char*)RCT2_ADDRESS_SCENARIO_NAME, buffer, 31); - ((char*)RCT2_ADDRESS_SCENARIO_NAME)[31] = '\0'; + safe_strcpy(gScenarioName, buffer, 64); // Set localised scenario details format_string(buffer, stex->details, 0); - safe_strcpy((char*)RCT2_ADDRESS_SCENARIO_DETAILS, buffer, 255); - ((char*)RCT2_ADDRESS_SCENARIO_DETAILS)[255] = '\0'; + safe_strcpy(gScenarioDetails, buffer, 256); } } } diff --git a/src/scenario.h b/src/scenario.h index d205267771..55b7411288 100644 --- a/src/scenario.h +++ b/src/scenario.h @@ -471,6 +471,8 @@ extern int gScenarioListCount; extern int gScenarioListCapacity; extern scenario_index_entry *gScenarioList; +extern char *gScenarioName; +extern char *gScenarioDetails; extern char gScenarioSavePath[MAX_PATH]; extern int gFirstTimeSave; extern uint32 gLastAutoSaveTick; diff --git a/src/windows/park.c b/src/windows/park.c index 191dafa801..78e1fe1e5c 100644 --- a/src/windows/park.c +++ b/src/windows/park.c @@ -1747,7 +1747,7 @@ static void window_park_objective_paint(rct_window *w, rct_drawpixelinfo *dpi) // Scenario description x = w->x + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].left + 4; y = w->y + window_park_objective_widgets[WIDX_PAGE_BACKGROUND].top + 7; - safe_strcpy((char*)0x009BC677, RCT2_ADDRESS(RCT2_ADDRESS_SCENARIO_DETAILS, char), 256); + safe_strcpy((char*)0x009BC677, gScenarioDetails, 256); RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, short) = 3165; y += gfx_draw_string_left_wrapped(dpi, (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, x, y, 222, 1191, 0); y += 5;