From 630e75c7d9090f454ef69fbe79a75fc852648218 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 10 Nov 2025 00:25:38 +0300 Subject: [PATCH] make adaptive menu fps optional ('display.adaptive-menu-fps' flag) --- src/engine/Mainloop.cpp | 2 ++ src/io/settings_io.cpp | 1 + src/settings.hpp | 2 ++ 3 files changed, 5 insertions(+) diff --git a/src/engine/Mainloop.cpp b/src/engine/Mainloop.cpp index e87bc7d9..d6ca17cb 100644 --- a/src/engine/Mainloop.cpp +++ b/src/engine/Mainloop.cpp @@ -18,6 +18,7 @@ Mainloop::Mainloop(Engine& engine) : engine(engine) { void Mainloop::run() { auto& time = engine.getTime(); auto& window = engine.getWindow(); + auto& settings = engine.getSettings(); engine.setLevelConsumer([this](auto level, int64_t localPlayer) { if (level == nullptr) { @@ -46,6 +47,7 @@ void Mainloop::run() { } engine.postUpdate(); engine.nextFrame( + settings.display.adaptiveFpsInMenu.get() && dynamic_cast(engine.getScreen().get()) != nullptr ); } diff --git a/src/io/settings_io.cpp b/src/io/settings_io.cpp index 5e1c8327..f4e89338 100644 --- a/src/io/settings_io.cpp +++ b/src/io/settings_io.cpp @@ -51,6 +51,7 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) { builder.add("framerate", &settings.display.framerate); builder.add("limit-fps-iconified", &settings.display.limitFpsIconified); builder.add("window-mode", &settings.display.windowMode); + builder.add("adaptive-menu-fps", &settings.display.adaptiveFpsInMenu); builder.section("camera"); builder.add("sensitivity", &settings.camera.sensitivity); diff --git a/src/settings.hpp b/src/settings.hpp index f97fb513..ee35d5a4 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -31,6 +31,8 @@ struct DisplaySettings { IntegerSetting framerate {-1, -1, 120}; /// @brief Limit framerate when window is iconified FlagSetting limitFpsIconified {false}; + /// @brief Adaptive framerate in menu (experimental) + FlagSetting adaptiveFpsInMenu {false}; }; struct ChunksSettings {