From eb19ae799512ea0abf5a4a9a5063fcfe5b4e16f0 Mon Sep 17 00:00:00 2001 From: Robert Jordan Date: Sat, 30 May 2015 12:43:24 -0400 Subject: [PATCH] Final changes --- data/language/english_uk.txt | 4 +-- src/config.c | 10 +++--- src/config.h | 3 +- src/interface/colour_schemes.c | 33 ++++++++++-------- src/windows/colour_schemes.c | 42 +++++++++++------------ src/windows/options.c | 55 ++++++++++++++++++++++-------- src/windows/title_scenarioselect.c | 11 ++++-- 7 files changed, 96 insertions(+), 62 deletions(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 0a36350196..e553eda52c 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3486,7 +3486,7 @@ STR_5149 :{SMALLFONT}{BLACK}Open the cheats window STR_5150 :Enable debugging tools STR_5151 :, STR_5152 :. -STR_5153 :Custom +STR_5153 :Colour schemes... STR_5154 :Hardware display STR_5155 :Allow testing of unfinished tracks STR_5156 :{SMALLFONT}{BLACK}Allows testing of most ride types even when the track is unfinished, does not apply to block sectioned modes @@ -3571,7 +3571,7 @@ STR_5234 :{SMALLFONT}{BLACK}Prompts STR_5235 :{SMALLFONT}{BLACK}Settings STR_5236 :Window: STR_5237 :Palette: -STR_5238 :Presets: +STR_5238 :Colour Schemes: STR_5239 :Duplicate STR_5240 :Enter a name for the colour scheme STR_5241 :Can't change this preset diff --git a/src/config.c b/src/config.c index 65c4ef0038..0202917af0 100644 --- a/src/config.c +++ b/src/config.c @@ -174,7 +174,6 @@ config_property_definition _generalDefinitions[] = { { offsetof(general_configuration, test_unfinished_tracks), "test_unfinished_tracks", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, no_test_crashes), "no_test_crashes", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, date_format), "date_format", CONFIG_VALUE_TYPE_UINT8, DATE_FORMAT_DMY, _dateFormatEnum }, - { offsetof(general_configuration, current_colour_scheme_preset), "colour_scheme_preset", CONFIG_VALUE_TYPE_STRING, { .value_string = "*RCT2" }, NULL }, }; config_property_definition _interfaceDefinitions[] = { @@ -182,8 +181,8 @@ config_property_definition _interfaceDefinitions[] = { { offsetof(interface_configuration, toolbar_show_research), "toolbar_show_research", CONFIG_VALUE_TYPE_BOOLEAN, true, NULL }, { offsetof(interface_configuration, toolbar_show_cheats), "toolbar_show_cheats", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(interface_configuration, allow_subtype_switching), "allow_subtype_switching", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, - { offsetof(interface_configuration, rct1_colour_scheme), "rct1_colour_scheme", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(interface_configuration, console_small_font), "console_small_font", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, + { offsetof(interface_configuration, current_colour_scheme_preset), "colour_scheme_preset", CONFIG_VALUE_TYPE_STRING, { .value_string = "*RCT2" }, NULL }, }; config_property_definition _soundDefinitions[] = { @@ -1061,15 +1060,15 @@ void colour_schemes_load_presets() } platform_enumerate_files_end(fileEnumHandle); - if (strcmp(gConfigGeneral.current_colour_scheme_preset, "*RCT2") == 0) { + if (strcmp(gConfigInterface.current_colour_scheme_preset, "*RCT2") == 0) { colour_scheme_change_preset(0); } - else if (strcmp(gConfigGeneral.current_colour_scheme_preset, "*RCT1") == 0) { + else if (strcmp(gConfigInterface.current_colour_scheme_preset, "*RCT1") == 0) { colour_scheme_change_preset(1); } else { for (i = 2; i < gConfigColourSchemes.num_presets; i++) { - if (strcmp(gConfigGeneral.current_colour_scheme_preset, gConfigColourSchemes.presets[i].name) == 0) { + if (strcmp(gConfigInterface.current_colour_scheme_preset, gConfigColourSchemes.presets[i].name) == 0) { colour_scheme_change_preset(i); break; } @@ -1206,7 +1205,6 @@ static void colour_schemes_read_properties(int preset, window_colours **colour_s utf8string sectionName; int sectionNameSize; if (config_get_section(ch, §ionName, §ionNameSize)) { - printf("%s\n", sectionName); sectionName[strlen(sectionName) - 1] = '\0'; for (int i = 0; i < (int)gNumColourSchemeWindows; i++) { if (strcmp(sectionName, gColourSchemes[i].section_name) == 0) { diff --git a/src/config.h b/src/config.h index ed6fd85d4a..f0b9354f22 100644 --- a/src/config.h +++ b/src/config.h @@ -139,7 +139,6 @@ typedef struct { uint8 test_unfinished_tracks; uint8 no_test_crashes; uint8 date_format; - utf8string current_colour_scheme_preset; } general_configuration; typedef struct { @@ -147,8 +146,8 @@ typedef struct { uint8 toolbar_show_research; uint8 toolbar_show_cheats; uint8 allow_subtype_switching; - uint8 rct1_colour_scheme; uint8 console_small_font; + utf8string current_colour_scheme_preset; } interface_configuration; typedef struct { diff --git a/src/interface/colour_schemes.c b/src/interface/colour_schemes.c index 0bb8eab1f7..59cf1d0fd3 100644 --- a/src/interface/colour_schemes.c +++ b/src/interface/colour_schemes.c @@ -160,13 +160,13 @@ void colour_scheme_change_preset(int preset) if (preset >= 0 && preset < gConfigColourSchemes.num_presets) { switch (preset) { case 0: - gConfigGeneral.current_colour_scheme_preset = "*RCT2"; + gConfigInterface.current_colour_scheme_preset = "*RCT2"; break; case 1: - gConfigGeneral.current_colour_scheme_preset = "*RCT1"; + gConfigInterface.current_colour_scheme_preset = "*RCT1"; break; default: - gConfigGeneral.current_colour_scheme_preset = gConfigColourSchemes.presets[preset].name; + gConfigInterface.current_colour_scheme_preset = gConfigColourSchemes.presets[preset].name; break; } gCurrentColourSchemePreset = preset; @@ -196,8 +196,7 @@ void colour_scheme_create_preset(const char *name) void colour_scheme_delete_preset(int preset) { - if (preset >= 2) - { + if (preset >= 2) { utf8 path[MAX_PATH]; platform_get_user_directory(path, "colour schemes"); strcat(path, gConfigColourSchemes.presets[preset].name); @@ -214,14 +213,20 @@ void colour_scheme_delete_preset(int preset) void colour_scheme_rename_preset(int preset, const char *newName) { - utf8 src[MAX_PATH], dest[MAX_PATH]; - platform_get_user_directory(src, "colour schemes"); - platform_get_user_directory(dest, "colour schemes"); - strcat(src, gConfigColourSchemes.presets[preset].name); - strcat(dest, newName); - strcat(src, ".ini"); - strcat(dest, ".ini"); - platform_file_move(src, dest); + if (preset >= 2) { + utf8 src[MAX_PATH], dest[MAX_PATH]; + platform_get_user_directory(src, "colour schemes"); + platform_get_user_directory(dest, "colour schemes"); + strcat(src, gConfigColourSchemes.presets[preset].name); + strcat(dest, newName); + strcat(src, ".ini"); + strcat(dest, ".ini"); + platform_file_move(src, dest); - strcpy(gConfigColourSchemes.presets[gCurrentColourSchemePreset].name, newName); + strcpy(gConfigColourSchemes.presets[gCurrentColourSchemePreset].name, newName); + + if (preset == gCurrentColourSchemePreset) { + gConfigInterface.current_colour_scheme_preset = gConfigColourSchemes.presets[gCurrentColourSchemePreset].name; + } + } } diff --git a/src/windows/colour_schemes.c b/src/windows/colour_schemes.c index 02cad82d1f..13e64fffde 100644 --- a/src/windows/colour_schemes.c +++ b/src/windows/colour_schemes.c @@ -147,7 +147,7 @@ static int window_colour_schemes_tab_animation_loops[] = { 32, 8, 14, - 28 + 32 }; static int window_colour_schemes_tab_animation_divisor[] = { 4, @@ -167,7 +167,7 @@ static int window_colour_schemes_tab_sprites[] = { 5205, 5201, SPR_TAB_STAFF_OPTIONS_0, - SPR_TAB_STATS_0 + 5221 }; static rct_windowclass window_colour_schemes_tab_1_classes[] = { @@ -383,6 +383,25 @@ static void window_colour_schemes_mouseup() case WIDX_COLOUR_SCHEMES_CLOSE: window_close(w); break; + case WIDX_COLOUR_SCHEMES_DUPLICATE_BUTTON: + window_text_input_open(w, widgetIndex, 5239, 5240, 1170, (uint32)&gConfigColourSchemes.presets[gCurrentColourSchemePreset].name, 64); + break; + case WIDX_COLOUR_SCHEMES_DELETE_BUTTON: + if (gCurrentColourSchemePreset >= 2) { + colour_scheme_delete_preset(gCurrentColourSchemePreset); + } + else { + window_error_open(5241, STR_NONE); + } + break; + case WIDX_COLOUR_SCHEMES_RENAME_BUTTON: + if (gCurrentColourSchemePreset >= 2) { + window_text_input_open(w, widgetIndex, 3348, 5240, 1170, (uint32)&gConfigColourSchemes.presets[gCurrentColourSchemePreset].name, 64); + } + else { + window_error_open(5241, STR_NONE); + } + break; } } @@ -473,25 +492,6 @@ static void window_colour_schemes_mousedown(int widgetIndex, rct_window* w, rct_ gDropdownItemsChecked = 1 << gCurrentColourSchemePreset; break; - case WIDX_COLOUR_SCHEMES_DUPLICATE_BUTTON: - window_text_input_open(w, widgetIndex, 5239, 5240, 1170, (rct_string_id)&gConfigColourSchemes.presets[gCurrentColourSchemePreset].name, 64); - break; - case WIDX_COLOUR_SCHEMES_DELETE_BUTTON: - if (gCurrentColourSchemePreset >= 2) { - colour_scheme_delete_preset(gCurrentColourSchemePreset); - } - else { - window_error_open(5241, STR_NONE); - } - break; - case WIDX_COLOUR_SCHEMES_RENAME_BUTTON: - if (gCurrentColourSchemePreset >= 2) { - window_text_input_open(w, widgetIndex, 3348, 5240, 1170, (rct_string_id)&gConfigColourSchemes.presets[gCurrentColourSchemePreset].name, 64); - } - else { - window_error_open(5241, STR_NONE); - } - break; } } diff --git a/src/windows/options.c b/src/windows/options.c index d1d365f5a9..8c14d16218 100644 --- a/src/windows/options.c +++ b/src/windows/options.c @@ -73,6 +73,8 @@ enum WINDOW_OPTIONS_WIDGET_IDX { WIDX_CONSTRUCTION_MARKER_DROPDOWN, WIDX_HARDWARE_DISPLAY_CHECKBOX, WIDX_COLOUR_SCHEMES, + WIDX_COLOUR_SCHEMES_DROPDOWN, + WIDX_COLOUR_SCHEMES_BUTTON, WIDX_LANGUAGE, WIDX_LANGUAGE_DROPDOWN, @@ -99,7 +101,6 @@ enum WINDOW_OPTIONS_WIDGET_IDX { WIDX_TOOLBAR_SHOW_FINANCES, WIDX_TOOLBAR_SHOW_RESEARCH, WIDX_TOOLBAR_SHOW_CHEATS, - WIDX_RCT1_COLOUR_SCHEME, WIDX_REAL_NAME_CHECKBOX, WIDX_SAVE_PLUGIN_DATA_CHECKBOX, @@ -143,7 +144,9 @@ static rct_widget window_options_widgets[] = { { WWT_DROPDOWN, 1, 155, 299, 113, 124, STR_NONE, STR_NONE }, // construction marker { WWT_DROPDOWN_BUTTON, 1, 288, 298, 114, 123, 876, STR_NONE }, { WWT_CHECKBOX, 1, 10, 290, 129, 140, 5154, STR_NONE }, - { WWT_DROPDOWN_BUTTON, 1, 26, 185, 144, 155, 5218, STR_NONE }, + { WWT_DROPDOWN, 1, 155, 299, 143, 154, STR_NONE, STR_NONE }, // colour schemes + { WWT_DROPDOWN_BUTTON, 1, 288, 298, 144, 153, 876, STR_NONE }, + { WWT_DROPDOWN_BUTTON, 1, 26, 185, 159, 170, 5153, STR_NONE }, // colour schemes button // Culture / units tab { WWT_DROPDOWN, 1, 155, 299, 53, 64, STR_NONE, STR_NONE }, // language @@ -173,7 +176,6 @@ static rct_widget window_options_widgets[] = { { WWT_CHECKBOX, 2, 10, 299, 82, 93, 5120, STR_NONE }, { WWT_CHECKBOX, 2, 10, 299, 97, 108, 5121, STR_NONE }, { WWT_CHECKBOX, 2, 10, 299, 112, 123, 5147, STR_NONE }, - { WWT_CHECKBOX, 2, 10, 299, 127, 138, 5153, STR_NONE }, // rct1 colour scheme // Misc { WWT_CHECKBOX, 2, 10, 299, 53, 64, STR_REAL_NAME, STR_REAL_NAME_TIP }, @@ -185,7 +187,7 @@ static rct_widget window_options_widgets[] = { { WWT_CHECKBOX, 2, 10, 299, 128, 139, 5155, 5156 }, // test unfinished tracks //Twitch tab - { WWT_DROPDOWN_BUTTON, 2, 10, 299, 53, 64, STR_TWITCH_NAME, STR_NONE }, // Twitch channel name + { WWT_DROPDOWN_BUTTON, 2, 10, 299, 53, 64, STR_TWITCH_NAME, STR_NONE }, // Twitch channel name { WWT_CHECKBOX, 2, 10, 299, 68, 79, STR_TWITCH_PEEP_FOLLOWERS, STR_TWITCH_PEEP_FOLLOWERS_TIP }, // Twitch name peeps by follows { WWT_CHECKBOX, 2, 10, 299, 83, 94, STR_TWITCH_FOLLOWERS_TRACK, STR_TWITCH_FOLLOWERS_TRACK_TIP}, // Twitch information on for follows { WWT_CHECKBOX, 2, 10, 299, 98, 109, STR_TWITCH_PEEP_CHAT, STR_TWITCH_PEEP_CHAT_TIP }, // Twitch name peeps by chat @@ -300,13 +302,14 @@ void window_options_open() (1ULL << WIDX_GRIDLINES_CHECKBOX) | (1ULL << WIDX_HARDWARE_DISPLAY_CHECKBOX) | (1ULL << WIDX_COLOUR_SCHEMES) | + (1ULL << WIDX_COLOUR_SCHEMES_DROPDOWN) | + (1ULL << WIDX_COLOUR_SCHEMES_BUTTON) | (1ULL << WIDX_SAVE_PLUGIN_DATA_CHECKBOX) | (1ULL << WIDX_AUTOSAVE) | (1ULL << WIDX_AUTOSAVE_DROPDOWN) | (1ULL << WIDX_ALLOW_SUBTYPE_SWITCHING) | (1ULL << WIDX_DEBUGGING_TOOLS) | (1ULL << WIDX_TEST_UNFINISHED_TRACKS) | - (1ULL << WIDX_RCT1_COLOUR_SCHEME) | (1ULL << WIDX_DATE_FORMAT) | (1ULL << WIDX_DATE_FORMAT_DROPDOWN) | (1ULL << WIDX_CHANNEL_BUTTON) | @@ -372,11 +375,6 @@ static void window_options_mouseup() window_invalidate(w); window_invalidate_by_class(WC_TOP_TOOLBAR); break; - case WIDX_RCT1_COLOUR_SCHEME: - gConfigInterface.rct1_colour_scheme ^= 1; - config_save_default(); - window_invalidate_all(); - break; case WIDX_ALLOW_SUBTYPE_SWITCHING: gConfigInterface.allow_subtype_switching ^= 1; config_save_default(); @@ -419,7 +417,7 @@ static void window_options_mouseup() config_save_default(); window_invalidate(w); break; - case WIDX_COLOUR_SCHEMES: + case WIDX_COLOUR_SCHEMES_BUTTON: window_colour_schemes_open(); window_invalidate(w); break; @@ -599,6 +597,18 @@ static void window_options_mousedown(int widgetIndex, rct_window*w, rct_widget* gDropdownItemsChecked = 1 << gConfigGeneral.construction_marker_colour; break; + case WIDX_COLOUR_SCHEMES_DROPDOWN: + num_items = gConfigColourSchemes.num_presets; + + for (i = 0; i < num_items; i++) { + gDropdownItemsFormat[i] = 2777; + gDropdownItemsArgs[i] = (uint64)&gConfigColourSchemes.presets[i].name; + } + + window_options_show_dropdown(w, widget, num_items); + + gDropdownItemsChecked = 1 << gCurrentColourSchemePreset; + break; case WIDX_LANGUAGE_DROPDOWN: for (i = 1; i < LANGUAGE_COUNT; i++) { gDropdownItemsFormat[i - 1] = 2777; @@ -758,6 +768,12 @@ static void window_options_dropdown() gfx_invalidate_screen(); } break; + case WIDX_COLOUR_SCHEMES_DROPDOWN: + if (dropdownIndex != -1) { + colour_scheme_change_preset(dropdownIndex); + } + config_save_default(); + break; } } @@ -826,7 +842,9 @@ static void window_options_invalidate() window_options_widgets[WIDX_CONSTRUCTION_MARKER].type = WWT_DROPDOWN; window_options_widgets[WIDX_CONSTRUCTION_MARKER_DROPDOWN].type = WWT_DROPDOWN_BUTTON; window_options_widgets[WIDX_HARDWARE_DISPLAY_CHECKBOX].type = WWT_CHECKBOX; - window_options_widgets[WIDX_COLOUR_SCHEMES].type = WWT_DROPDOWN_BUTTON; + window_options_widgets[WIDX_COLOUR_SCHEMES].type = WWT_DROPDOWN; + window_options_widgets[WIDX_COLOUR_SCHEMES_DROPDOWN].type = WWT_DROPDOWN_BUTTON; + window_options_widgets[WIDX_COLOUR_SCHEMES_BUTTON].type = WWT_DROPDOWN_BUTTON; break; case WINDOW_OPTIONS_PAGE_CULTURE: // currency: pounds, dollars, etc. (10 total) @@ -886,14 +904,12 @@ static void window_options_invalidate() widget_set_checkbox_value(w, WIDX_TOOLBAR_SHOW_FINANCES, gConfigInterface.toolbar_show_finances); widget_set_checkbox_value(w, WIDX_TOOLBAR_SHOW_RESEARCH, gConfigInterface.toolbar_show_research); widget_set_checkbox_value(w, WIDX_TOOLBAR_SHOW_CHEATS, gConfigInterface.toolbar_show_cheats); - widget_set_checkbox_value(w, WIDX_RCT1_COLOUR_SCHEME, gConfigInterface.rct1_colour_scheme); window_options_widgets[WIDX_SCREEN_EDGE_SCROLLING].type = WWT_CHECKBOX; window_options_widgets[WIDX_HOTKEY_DROPDOWN].type = WWT_DROPDOWN_BUTTON; window_options_widgets[WIDX_TOOLBAR_SHOW_FINANCES].type = WWT_CHECKBOX; window_options_widgets[WIDX_TOOLBAR_SHOW_RESEARCH].type = WWT_CHECKBOX; window_options_widgets[WIDX_TOOLBAR_SHOW_CHEATS].type = WWT_CHECKBOX; - window_options_widgets[WIDX_RCT1_COLOUR_SCHEME].type = WWT_CHECKBOX; break; case WINDOW_OPTIONS_PAGE_MISC: widget_set_checkbox_value(w, WIDX_ALLOW_SUBTYPE_SWITCHING, gConfigInterface.allow_subtype_switching); @@ -979,6 +995,17 @@ static void window_options_paint() gfx_draw_string(dpi, buffer, 0, w->x + 10, w->y + window_options_widgets[WIDX_FULLSCREEN].top + 1); gfx_draw_string_left(dpi, STR_CONSTRUCTION_MARKER, w, 0, w->x + 10, w->y + window_options_widgets[WIDX_CONSTRUCTION_MARKER].top + 1); + + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 0, uint32) = (uint32)&gConfigColourSchemes.presets[gCurrentColourSchemePreset].name; + gfx_draw_string_left(dpi, 5238, NULL, w->colours[1], w->x + 10, w->y + window_options_widgets[WIDX_COLOUR_SCHEMES].top + 1); + gfx_draw_string_left( + dpi, + 1170, + (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, + w->colours[1], + w->x + window_options_widgets[WIDX_COLOUR_SCHEMES].left + 1, + w->y + window_options_widgets[WIDX_COLOUR_SCHEMES].top + ); break; case WINDOW_OPTIONS_PAGE_CULTURE: gfx_draw_string_left(dpi, 2776, w, 12, w->x + 10, w->y + window_options_widgets[WIDX_LANGUAGE].top + 1); diff --git a/src/windows/title_scenarioselect.c b/src/windows/title_scenarioselect.c index 5644f08abf..53b326ef1f 100644 --- a/src/windows/title_scenarioselect.c +++ b/src/windows/title_scenarioselect.c @@ -301,7 +301,9 @@ static void window_scenarioselect_paint() window_draw_widgets(w, dpi); // Use small text for the tabs when the RCT1 colour scheme is selected. - format = (gConfigInterface.rct1_colour_scheme) ? 5138 : 1193; + //format = (gConfigInterface.rct1_colour_scheme) ? 5138 : 1193; + // Will reimplement this later + format = 1193; // Text for each tab for (i = 0; i < 5; i++) { @@ -367,8 +369,11 @@ static void window_scenarioselect_scrollpaint() gfx_clear(dpi, colour); // Use white text for the scenario names when the RCT1 colour scheme is selected - highlighted_format = gConfigInterface.rct1_colour_scheme ? 5139 : 1193; - unhighlighted_format = gConfigInterface.rct1_colour_scheme ? 5139 : 1191; + //highlighted_format = gConfigInterface.rct1_colour_scheme ? 5139 : 1193; + //unhighlighted_format = gConfigInterface.rct1_colour_scheme ? 5139 : 1191; + // Will reimplement this later + highlighted_format = 1193; + unhighlighted_format = 1191; y = 0; for (i = 0; i < gScenarioListCount; i++) {