diff --git a/rsrc/dialogs/preferences.xml b/rsrc/dialogs/preferences.xml index a37526bd..8b96f093 100644 --- a/rsrc/dialogs/preferences.xml +++ b/rsrc/dialogs/preferences.xml @@ -38,8 +38,24 @@ Make game easier (monsters much weaker) Fewer wandering monsters Skip splash screen on startup - Apply UI scaling - - + Scale UI: + + 1 + 1.5 + 2 + 3 + 4 + other + + Scale Map: + + 1 + 1.5 + 2 + 3 + 4 + other + + diff --git a/src/game/boe.dlgutil.cpp b/src/game/boe.dlgutil.cpp index bf97c037..ae56c397 100644 --- a/src/game/boe.dlgutil.cpp +++ b/src/game/boe.dlgutil.cpp @@ -1147,11 +1147,28 @@ static bool prefs_event_filter (cDialog& me, std::string id, eKeyMod) { if(dynamic_cast(me["resethelp"]).getState() == led_red) { reset_help = true; } - cLed& ui_scale = dynamic_cast(me["scaleui"]); - if(ui_scale.getState() == led_off) + std::string scale = dynamic_cast(me["scaleui"]).getSelected(); + if(scale == "1") set_pref("UIScale", 1.0); - else if(ui_scale.getState() == led_red) + else if(scale == "1_5") + set_pref("UIScale", 1.5); + else if(scale == "2") set_pref("UIScale", 2.0); + else if(scale == "3") + set_pref("UIScale", 3.0); + else if(scale == "4") + set_pref("UIScale", 4.0); + std::string scale_map = dynamic_cast(me["scalemap"]).getSelected(); + if(scale_map == "1") + set_pref("UIScaleMap", 1.0); + else if(scale_map == "1_5") + set_pref("UIScaleMap", 1.5); + else if(scale_map == "2") + set_pref("UIScaleMap", 2.0); + else if(scale_map == "3") + set_pref("UIScaleMap", 3.0); + else if(scale_map == "4") + set_pref("UIScaleMap", 4.0); } save_prefs(reset_help); return true; @@ -1215,15 +1232,30 @@ void pick_preferences() { break; } + cLedGroup& uiScale = dynamic_cast(prefsDlog["scaleui"]); float ui_scale = get_float_pref("UIScale", 1.0); - dynamic_cast(prefsDlog["scaleui"]).setState(ui_scale == 1.0 ? led_off : (ui_scale == 2.0 ? led_red : led_green)); - + if (ui_scale>0.95 && ui_scale<1.05) uiScale.setSelected("1"); + else if (ui_scale>1.45 && ui_scale<1.55) uiScale.setSelected("1_5"); + else if (ui_scale>1.95 && ui_scale<2.05) uiScale.setSelected("2"); + else if (ui_scale>2.95 && ui_scale<3.05) uiScale.setSelected("3"); + else if (ui_scale>3.95 && ui_scale<4.05) uiScale.setSelected("4"); + else uiScale.setSelected("other"); + + cLedGroup& uiMapScale = dynamic_cast(prefsDlog["scalemap"]); + float ui_map_scale = get_float_pref("UIScaleMap", 1.0); + if (ui_map_scale>0.95 && ui_map_scale<1.05) uiMapScale.setSelected("1"); + else if (ui_map_scale>1.45 && ui_map_scale<1.55) uiMapScale.setSelected("1_5"); + else if (ui_map_scale>1.95 && ui_map_scale<2.05) uiMapScale.setSelected("2"); + else if (ui_map_scale>2.95 && ui_map_scale<3.05) uiMapScale.setSelected("3"); + else if (ui_map_scale>3.95 && ui_map_scale<4.05) uiMapScale.setSelected("4"); + else uiMapScale.setSelected("other"); + void (*give_help)(short,short,cDialog&) = ::give_help; int store_display_mode = get_int_pref("DisplayMode"); prefsDlog.run(std::bind(give_help, 55, 0, std::ref(prefsDlog))); - if(get_int_pref("DisplayMode") != store_display_mode || get_float_pref("UIScale") != ui_scale) + if(get_int_pref("DisplayMode") != store_display_mode || get_float_pref("UIScale") != ui_scale || get_float_pref("UIScaleMap") != ui_map_scale) changed_display_mode = true; } diff --git a/src/game/boe.items.cpp b/src/game/boe.items.cpp index dd43df98..a7bfed00 100644 --- a/src/game/boe.items.cpp +++ b/src/game/boe.items.cpp @@ -673,7 +673,7 @@ short get_num_of_items(short max_num) { } void init_mini_map() { - float ui_scale = get_float_pref("UIScale", 1.0); + float ui_scale = get_float_pref("UIScaleMap", 1.0); if (ui_scale < 0.1) ui_scale = 1.0; if (mini_map.isOpen()) mini_map.close(); mini_map.create(sf::VideoMode(ui_scale*296,ui_scale*277), "Map", sf::Style::Titlebar | sf::Style::Close);