diff --git a/src/lang/english.txt b/src/lang/english.txt index a13bfebe7c..8883a15850 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1011,6 +1011,9 @@ STR_GAME_OPTIONS_VIDEO_DRIVER_INFO :{BLACK}Current STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interface size STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Select the interface element size to use +STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale bevels +STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size + STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(auto-detect) STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Double size diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 525874e086..c11393de52 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -475,6 +475,17 @@ struct GameOptionsWindow : Window { this->SetWidgetDirty(WID_GO_REFRESH_RATE_DROPDOWN); break; + case WID_GO_GUI_SCALE_BEVEL_BUTTON: { + _settings_client.gui.scale_bevels = !_settings_client.gui.scale_bevels; + + this->SetWidgetLoweredState(WID_GO_GUI_SCALE_BEVEL_BUTTON, _settings_client.gui.scale_bevels); + this->SetDirty(); + + SetupWidgetDimensions(); + ReInitAllWindows(true); + break; + } + case WID_GO_BASE_SFX_VOLUME: case WID_GO_BASE_MUSIC_VOLUME: { byte &vol = (widget == WID_GO_BASE_MUSIC_VOLUME) ? _settings_client.music.music_vol : _settings_client.music.effect_vol; @@ -572,6 +583,7 @@ struct GameOptionsWindow : Window { _gui_zoom_cfg = new_zoom; UpdateGUIZoom(); UpdateCursorSize(); + SetupWidgetDimensions(); UpdateAllVirtCoords(); FixTitleGameZoom(); ReInitAllWindows(true); @@ -587,6 +599,7 @@ struct GameOptionsWindow : Window { UpdateGUIZoom(); ClearFontCache(); LoadStringWidthTable(); + SetupWidgetDimensions(); UpdateAllVirtCoords(); ReInitAllWindows(true); } @@ -624,6 +637,8 @@ struct GameOptionsWindow : Window { this->SetWidgetDisabledState(WID_GO_VIDEO_VSYNC_BUTTON, !_video_hw_accel); #endif + this->SetWidgetLoweredState(WID_GO_GUI_SCALE_BEVEL_BUTTON, _settings_client.gui.scale_bevels); + bool missing_files = BaseGraphics::GetUsedSet()->GetNumMissing() == 0; this->GetWidget(WID_GO_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_STATUS, STR_NULL); @@ -650,7 +665,14 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_AUTOSAVE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP), SetFill(1, 0), EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GUI_ZOOM_FRAME, STR_NULL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_GUI_ZOOM_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP), SetFill(1, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_GUI_ZOOM_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_GUI_SCALE_BEVELS, STR_NULL), + NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_GUI_SCALE_BEVEL_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP), + EndContainer(), + EndContainer(), EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0), diff --git a/src/settings_type.h b/src/settings_type.h index c53763ee36..2033e746ab 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -193,6 +193,8 @@ struct GUISettings { bool newgrf_show_old_versions; ///< whether to show old versions in the NewGRF list uint8 newgrf_default_palette; ///< default palette to use for NewGRFs without action 14 palette information + bool scale_bevels; ///< bevels are scaled with GUI scale. + /** * Returns true when the user has sufficient privileges to edit newgrfs on a running game * @return whether the user has sufficient privileges to edit newgrfs in an existing game diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini index cf4ef71aba..7e4f85ec67 100644 --- a/src/table/settings/gui_settings.ini +++ b/src/table/settings/gui_settings.ini @@ -861,3 +861,11 @@ min = 1 max = 65535 cat = SC_EXPERT +[SDTC_BOOL] +var = gui.scale_bevels +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +post_cb = [](auto) { SetupWidgetDimensions(); ReInitAllWindows(true); } +cat = SC_BASIC +startup = true + diff --git a/src/widget.cpp b/src/widget.cpp index fe1dcff893..7498ff976f 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -201,7 +201,11 @@ void SetupWidgetDimensions() WidgetDimensions::scaled.inset = ScaleGUITrad(WidgetDimensions::unscaled.inset); WidgetDimensions::scaled.vscrollbar = ScaleGUITrad(WidgetDimensions::unscaled.vscrollbar); WidgetDimensions::scaled.hscrollbar = ScaleGUITrad(WidgetDimensions::unscaled.hscrollbar); - WidgetDimensions::scaled.bevel = WidgetDimensions::unscaled.bevel; + if (_settings_client.gui.scale_bevels) { + WidgetDimensions::scaled.bevel = ScaleGUITrad(WidgetDimensions::unscaled.bevel); + } else { + WidgetDimensions::scaled.bevel = WidgetDimensions::unscaled.bevel; + } WidgetDimensions::scaled.fullbevel = ScaleGUITrad(WidgetDimensions::unscaled.fullbevel); WidgetDimensions::scaled.framerect = ScaleGUITrad(WidgetDimensions::unscaled.framerect); WidgetDimensions::scaled.frametext = ScaleGUITrad(WidgetDimensions::unscaled.frametext); diff --git a/src/widgets/settings_widget.h b/src/widgets/settings_widget.h index 8caffece90..e727c4d277 100644 --- a/src/widgets/settings_widget.h +++ b/src/widgets/settings_widget.h @@ -20,6 +20,7 @@ enum GameOptionsWidgets { WID_GO_RESOLUTION_DROPDOWN, ///< Dropdown for the resolution. WID_GO_FULLSCREEN_BUTTON, ///< Toggle fullscreen. WID_GO_GUI_ZOOM_DROPDOWN, ///< Dropdown for the GUI zoom level. + WID_GO_GUI_SCALE_BEVEL_BUTTON, ///< Toggle for chunky bevels. WID_GO_BASE_GRF_DROPDOWN, ///< Use to select a base GRF. WID_GO_BASE_GRF_STATUS, ///< Info about missing files etc. WID_GO_BASE_GRF_TEXTFILE, ///< Open base GRF readme, changelog (+1) or license (+2).