diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 65febf820c..e4aa56841f 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -4093,6 +4093,7 @@ STR_5785 :Can't rename group... STR_5786 :Invalid group name STR_5787 :{COMMA32} players online STR_5788 :Default inspection interval: +STR_5789 :Disable lightning effect ############# # Scenarios # diff --git a/distribution/changelog.txt b/distribution/changelog.txt index aeb9fbcce5..cad22dc0ee 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -28,6 +28,7 @@ - Feature: Use fontconfig on Linux and Objective-C APIs on OS X to detect fonts and provide a fallback if necessary. - Feature: Ability to automatically open shops after placing them. - Feature: Ability to change the default inspection interval for rides. +- Feature: Ability to disable lightning effect during a thunderstorm. - Change: Server IP addresses are no longer shown in the server list. - Change: Theme format changed from INI to JSON (INI format no longer supported). - Change: Sound controls re-worked to control sound effects and ride music separately. diff --git a/src/config.c b/src/config.c index ded803ae33..6742cfd6ae 100644 --- a/src/config.c +++ b/src/config.c @@ -206,6 +206,7 @@ config_property_definition _generalDefinitions[] = { { offsetof(general_configuration, minimize_fullscreen_focus_loss), "minimize_fullscreen_focus_loss",CONFIG_VALUE_TYPE_BOOLEAN, true, NULL }, { offsetof(general_configuration, day_night_cycle), "day_night_cycle", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, upper_case_banners), "upper_case_banners", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, + { offsetof(general_configuration, disable_lightning_effect), "disable_lightning_effect", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, allow_loading_with_incorrect_checksum),"allow_loading_with_incorrect_checksum", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(general_configuration, steam_overlay_pause), "steam_overlay_pause", CONFIG_VALUE_TYPE_BOOLEAN, true, NULL }, { offsetof(general_configuration, window_scale), "window_scale", CONFIG_VALUE_TYPE_FLOAT, { .value_float = 1.0f }, NULL }, diff --git a/src/config.h b/src/config.h index f33a7b225a..e9890bece9 100644 --- a/src/config.h +++ b/src/config.h @@ -175,6 +175,7 @@ typedef struct { uint8 minimize_fullscreen_focus_loss; uint8 day_night_cycle; uint8 upper_case_banners; + uint8 disable_lightning_effect; uint8 allow_loading_with_incorrect_checksum; uint8 steam_overlay_pause; float window_scale; diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index fe82d9decf..878c07142b 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -2409,6 +2409,8 @@ enum { STR_DEFAULT_INSPECTION_INTERVAL = 5788, + STR_DISABLE_LIGHTNING_EFFECT = 5789, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 }; diff --git a/src/windows/options.c b/src/windows/options.c index 954d302bec..cdbb0a936d 100644 --- a/src/windows/options.c +++ b/src/windows/options.c @@ -100,6 +100,7 @@ enum WINDOW_OPTIONS_WIDGET_IDX { WIDX_CONSTRUCTION_MARKER_DROPDOWN, WIDX_DAY_NIGHT_CHECKBOX, WIDX_UPPER_CASE_BANNERS_CHECKBOX, + WIDX_DISABLE_LIGHTNING_EFFECT_CHECKBOX, // Culture / Units WIDX_LANGUAGE = WIDX_PAGE_START, @@ -222,13 +223,14 @@ static rct_widget window_options_display_widgets[] = { static rct_widget window_options_rendering_widgets[] = { MAIN_OPTIONS_WIDGETS, #define FRAME_RENDERING_START 53 - { WWT_GROUPBOX, 1, 5, 304, FRAME_RENDERING_START + 0, FRAME_RENDERING_START + 91, STR_RENDERING_GROUP, STR_NONE }, // Rendering group + { WWT_GROUPBOX, 1, 5, 304, FRAME_RENDERING_START + 0, FRAME_RENDERING_START + 106, STR_RENDERING_GROUP, STR_NONE }, // Rendering group { WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 15, FRAME_RENDERING_START + 26, STR_TILE_SMOOTHING, STR_TILE_SMOOTHING_TIP }, // landscape smoothing { WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 30, FRAME_RENDERING_START + 41, STR_GRIDLINES, STR_GRIDLINES_TIP }, // gridlines { WWT_DROPDOWN, 1, 155, 299, FRAME_RENDERING_START + 45, FRAME_RENDERING_START + 55, STR_NONE, STR_NONE }, // construction marker { WWT_DROPDOWN_BUTTON, 1, 288, 298, FRAME_RENDERING_START + 46, FRAME_RENDERING_START + 54, STR_DROPDOWN_GLYPH, STR_NONE }, { WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 60, FRAME_RENDERING_START + 71, STR_CYCLE_DAY_NIGHT, STR_NONE }, // cycle day-night { WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 75, FRAME_RENDERING_START + 86, STR_UPPER_CASE_BANNERS, STR_NONE }, // upper case banners + { WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 90, FRAME_RENDERING_START + 101, STR_DISABLE_LIGHTNING_EFFECT, STR_NONE }, // disable lightning effect #undef FRAME_RENDERING_START { WIDGETS_END }, }; @@ -426,7 +428,8 @@ static uint32 window_options_page_enabled_widgets[] = { (1 << WIDX_CONSTRUCTION_MARKER) | (1 << WIDX_CONSTRUCTION_MARKER_DROPDOWN) | (1 << WIDX_DAY_NIGHT_CHECKBOX) | - (1 << WIDX_UPPER_CASE_BANNERS_CHECKBOX), + (1 << WIDX_UPPER_CASE_BANNERS_CHECKBOX) | + (1 << WIDX_DISABLE_LIGHTNING_EFFECT_CHECKBOX), MAIN_OPTIONS_ENABLED_WIDGETS | (1 << WIDX_LANGUAGE) | @@ -619,6 +622,11 @@ static void window_options_mouseup(rct_window *w, int widgetIndex) config_save_default(); window_invalidate(w); break; + case WIDX_DISABLE_LIGHTNING_EFFECT_CHECKBOX: + gConfigGeneral.disable_lightning_effect ^= 1; + config_save_default(); + window_invalidate(w); + break; } break; @@ -1369,6 +1377,7 @@ static void window_options_invalidate(rct_window *w) widget_set_checkbox_value(w, WIDX_GRIDLINES_CHECKBOX, RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_FLAGS, uint8) & CONFIG_FLAG_ALWAYS_SHOW_GRIDLINES); widget_set_checkbox_value(w, WIDX_DAY_NIGHT_CHECKBOX, gConfigGeneral.day_night_cycle); widget_set_checkbox_value(w, WIDX_UPPER_CASE_BANNERS_CHECKBOX, gConfigGeneral.upper_case_banners); + widget_set_checkbox_value(w, WIDX_DISABLE_LIGHTNING_EFFECT_CHECKBOX, gConfigGeneral.disable_lightning_effect); // construction marker: white/translucent window_options_rendering_widgets[WIDX_CONSTRUCTION_MARKER].image = STR_WHITE + gConfigGeneral.construction_marker_colour; @@ -1379,6 +1388,7 @@ static void window_options_invalidate(rct_window *w) window_options_rendering_widgets[WIDX_CONSTRUCTION_MARKER_DROPDOWN].type = WWT_DROPDOWN_BUTTON; window_options_rendering_widgets[WIDX_DAY_NIGHT_CHECKBOX].type = WWT_CHECKBOX; window_options_rendering_widgets[WIDX_UPPER_CASE_BANNERS_CHECKBOX].type = WWT_CHECKBOX; + window_options_rendering_widgets[WIDX_DISABLE_LIGHTNING_EFFECT_CHECKBOX].type = WWT_CHECKBOX; break; case WINDOW_OPTIONS_PAGE_CULTURE: diff --git a/src/world/climate.c b/src/world/climate.c index 412a45b142..5f0353da73 100644 --- a/src/world/climate.c +++ b/src/world/climate.c @@ -302,10 +302,12 @@ static void climate_update_lightning() if (_lightningTimer == 0) return; - _lightningTimer--; - if (RCT2_GLOBAL(RCT2_ADDRESS_LIGHTNING_ACTIVE, uint16) == 0) - if ((util_rand() & 0xFFFF) <= 0x2000) - RCT2_GLOBAL(RCT2_ADDRESS_LIGHTNING_ACTIVE, uint16) = 1; + if (!gConfigGeneral.disable_lightning_effect) { + _lightningTimer--; + if (RCT2_GLOBAL(RCT2_ADDRESS_LIGHTNING_ACTIVE, uint16) == 0) + if ((util_rand() & 0xFFFF) <= 0x2000) + RCT2_GLOBAL(RCT2_ADDRESS_LIGHTNING_ACTIVE, uint16) = 1; + } } static void climate_update_thunder()