diff --git a/builtin/client/pause_menu.lua b/builtin/client/pause_menu.lua index da4158f09..f3c6a7206 100644 --- a/builtin/client/pause_menu.lua +++ b/builtin/client/pause_menu.lua @@ -109,5 +109,5 @@ end function core.show_settings() load(true, false) - show_settings_client_formspec() + show_settings_client_formspec("MT_PAUSE_MENU_SETTINGS") end diff --git a/builtin/mainmenu/settings/dlg_settings.lua b/builtin/mainmenu/settings/dlg_settings.lua index 76eee8fdb..053cde2e9 100644 --- a/builtin/mainmenu/settings/dlg_settings.lua +++ b/builtin/mainmenu/settings/dlg_settings.lua @@ -756,6 +756,6 @@ function create_settings_dlg() return dlg end -function show_settings_client_formspec() - minetest.show_formspec("dlg_settings", get_formspec({})) +function show_settings_client_formspec(name) + minetest.show_formspec(name or "dlg_settings", get_formspec({})) end diff --git a/src/client/game.cpp b/src/client/game.cpp index 30a01fe51..c71b19c6b 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -189,6 +189,20 @@ struct LocalFormspecHandler : public TextDest return; } + + if (m_formname == "MT_PAUSE_MENU_SETTINGS") + { + // Loop through settings + for (auto i : fields) + { + if (g_settings->existsLocal(i.first) && g_settings->get(i.first) != i.second) + { + g_settings->set(i.first, i.second); + //std::cout << "Setting " << i.first << " set!" << std::endl; + } + } + return; + } if (m_formname == "MT_DEATH_SCREEN") { assert(m_client != nullptr); @@ -1880,6 +1894,7 @@ inline bool Game::handleCallbacks() (new GUIKeyChangeMenu(guienv, guiroot, -1, &g_menumgr, texture_src))->drop(); g_gamecallback->keyconfig_requested = false; + m_is_paused = false; } if (g_gamecallback->unpause_requested) { @@ -1891,6 +1906,7 @@ inline bool Game::handleCallbacks() if (client->modsLoaded()) { client->getScript()->show_settings(); + m_is_paused = false; } g_gamecallback->show_settings_requested = false; }