summaryrefslogtreecommitdiff
path: root/src/settings_gui.cpp
diff options
context:
space:
mode:
authorMichael Lutz <michi@icosahedron.de>2021-01-08 22:15:06 +0100
committerMichael Lutz <michi@icosahedron.de>2021-02-14 14:16:40 +0100
commit22f5aeab07cb1c67561b9e348e2c944740233607 (patch)
tree0dbb0edbf02962e297e7d99e6d96b14ee570333b /src/settings_gui.cpp
parenta2c3197f424daa6e02201d8304015b0eb67d0b04 (diff)
downloadopenttd-22f5aeab07cb1c67561b9e348e2c944740233607.tar.xz
Feature: Automatic UI and font zoom levels when supported by the OS.
Diffstat (limited to 'src/settings_gui.cpp')
-rw-r--r--src/settings_gui.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
index e04c50ac3..8bf118e76 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -58,6 +58,7 @@ static const StringID _autosave_dropdown[] = {
};
static const StringID _gui_zoom_dropdown[] = {
+ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO,
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL,
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM,
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM,
@@ -65,6 +66,7 @@ static const StringID _gui_zoom_dropdown[] = {
};
static const StringID _font_zoom_dropdown[] = {
+ STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO,
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL,
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM,
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM,
@@ -291,16 +293,16 @@ struct GameOptionsWindow : Window {
break;
case WID_GO_GUI_ZOOM_DROPDOWN: {
- *selected_index = ZOOM_LVL_OUT_4X - _gui_zoom;
+ *selected_index = _gui_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _gui_zoom + 1 : 0;
const StringID *items = _gui_zoom_dropdown;
for (int i = 0; *items != INVALID_STRING_ID; items++, i++) {
- list.emplace_back(new DropDownListStringItem(*items, i, _settings_client.gui.zoom_min > ZOOM_LVL_OUT_4X - i));
+ list.emplace_back(new DropDownListStringItem(*items, i, i != 0 && _settings_client.gui.zoom_min > ZOOM_LVL_OUT_4X - i + 1));
}
break;
}
case WID_GO_FONT_ZOOM_DROPDOWN: {
- *selected_index = ZOOM_LVL_OUT_4X - _font_zoom;
+ *selected_index = _font_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _font_zoom + 1 : 0;
const StringID *items = _font_zoom_dropdown;
for (int i = 0; *items != INVALID_STRING_ID; items++, i++) {
list.emplace_back(new DropDownListStringItem(*items, i, false));
@@ -333,8 +335,8 @@ struct GameOptionsWindow : Window {
case WID_GO_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break;
case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break;
case WID_GO_RESOLUTION_DROPDOWN: SetDParam(0, GetCurRes() == _resolutions.size() ? STR_GAME_OPTIONS_RESOLUTION_OTHER : SPECSTR_RESOLUTION_START + GetCurRes()); break;
- case WID_GO_GUI_ZOOM_DROPDOWN: SetDParam(0, _gui_zoom_dropdown[ZOOM_LVL_OUT_4X - _gui_zoom]); break;
- case WID_GO_FONT_ZOOM_DROPDOWN: SetDParam(0, _font_zoom_dropdown[ZOOM_LVL_OUT_4X - _font_zoom]); break;
+ case WID_GO_GUI_ZOOM_DROPDOWN: SetDParam(0, _gui_zoom_dropdown[_gui_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _gui_zoom_cfg + 1 : 0]); break;
+ case WID_GO_FONT_ZOOM_DROPDOWN: SetDParam(0, _font_zoom_dropdown[_font_zoom_cfg != ZOOM_LVL_CFG_AUTO ? ZOOM_LVL_OUT_4X - _font_zoom_cfg + 1 : 0]); break;
case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name.c_str()); break;
case WID_GO_BASE_GRF_STATUS: SetDParam(0, BaseGraphics::GetUsedSet()->GetNumInvalid()); break;
case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name.c_str()); break;
@@ -538,7 +540,8 @@ struct GameOptionsWindow : Window {
case WID_GO_GUI_ZOOM_DROPDOWN:
GfxClearSpriteCache();
- _gui_zoom = (ZoomLevel)(ZOOM_LVL_OUT_4X - index);
+ _gui_zoom_cfg = index > 0 ? ZOOM_LVL_OUT_4X - index + 1 : ZOOM_LVL_CFG_AUTO;
+ UpdateGUIZoom();
UpdateCursorSize();
UpdateAllVirtCoords();
FixTitleGameZoom();
@@ -547,7 +550,8 @@ struct GameOptionsWindow : Window {
case WID_GO_FONT_ZOOM_DROPDOWN:
GfxClearSpriteCache();
- _font_zoom = (ZoomLevel)(ZOOM_LVL_OUT_4X - index);
+ _font_zoom_cfg = index > 0 ? ZOOM_LVL_OUT_4X - index + 1 : ZOOM_LVL_CFG_AUTO;
+ UpdateGUIZoom();
ClearFontCache();
LoadStringWidthTable();
UpdateAllVirtCoords();