From 708c276787dd7f0a4ba2023aca0f645688866706 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Sat, 3 Oct 2026 12:56:54 +0000 Subject: [PATCH] Add GUI scale setting and volume contrast setting GUI scale (#737): - add display.gui-scale setting (0 - auto, 1..4 - fixed integer scale) - auto mode picks the largest scale keeping at least 640x480 UI units - apply scale in GUI (root size, camera, cursor, tooltips, scissors) - HUD layout and ModelViewer use scaled coordinates - add GUI Scale trackbar to display settings Volume contrast (#399): - add audio.volume-contrast setting (100% - unchanged sounds, 0% - loud sounds are lowered to the level of quiet ones) - loudness (RMS) of a sound is calculated once and cached - add trackbar to audio settings and reset page --- res/layouts/pages/settings_audio.xml.lua | 7 ++- res/layouts/pages/settings_display.xml.lua | 9 +++ res/layouts/pages/settings_reset.xml.lua | 1 + res/texts/ru_RU.txt | 5 ++ src/audio/audio.cpp | 64 +++++++++++++++++++++- src/frontend/hud.cpp | 9 +-- src/frontend/hud.hpp | 2 +- src/graphics/core/DrawContext.cpp | 6 +- src/graphics/core/DrawContext.hpp | 5 ++ src/graphics/ui/GUI.cpp | 46 +++++++++++++--- src/graphics/ui/GUI.hpp | 12 ++++ src/graphics/ui/elements/ModelViewer.cpp | 2 +- src/io/settings_io.cpp | 2 + src/settings.hpp | 5 ++ 14 files changed, 158 insertions(+), 17 deletions(-) diff --git a/res/layouts/pages/settings_audio.xml.lua b/res/layouts/pages/settings_audio.xml.lua index 97628d1e8..6720496df 100644 --- a/res/layouts/pages/settings_audio.xml.lua +++ b/res/layouts/pages/settings_audio.xml.lua @@ -1,6 +1,7 @@ -function create_trackbar_setting(id, name, step, postfix) +function create_trackbar_setting(id, name, step, postfix, tooltip) local info = app.get_setting_info(id) postfix = postfix or "" + tooltip = tooltip or "" document.root:add(gui.template("track_setting", { id=id, name=gui.str(name, "settings"), @@ -8,7 +9,8 @@ function create_trackbar_setting(id, name, step, postfix) min=info.min, max=info.max, step=step, - postfix=postfix + postfix=postfix, + tooltip=gui.str(tooltip, "settings") })) update_trackbar_label(app.get_setting(id), id, name, postfix) end @@ -78,6 +80,7 @@ function on_open() create_trackbar_setting("audio.volume-ui", "UI Sounds", 0.01) create_trackbar_setting("audio.volume-ambient", "Ambient", 0.01) create_trackbar_setting("audio.volume-music", "Music", 0.01) + create_trackbar_setting("audio.volume-contrast", "Volume Contrast", 0.01, "", "audio.volume-contrast.tooltip") document.root:add("") document.root:add("