mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Save minetest screen width/height options when modified (#5683)
* Save minetest screen width/height options when modified * Add autosave_screensize setting (default true) * Fix @SmallJoker comments
This commit is contained in:
parent
d6cf5450a8
commit
21e0a049f8
6 changed files with 50 additions and 3 deletions
|
@ -121,6 +121,7 @@ void set_default_settings(Settings *settings)
|
|||
settings->setDefault("viewing_range", "100");
|
||||
settings->setDefault("screenW", "800");
|
||||
settings->setDefault("screenH", "600");
|
||||
settings->setDefault("autosave_screensize", "true");
|
||||
settings->setDefault("fullscreen", "false");
|
||||
settings->setDefault("fullscreen_bpp", "24");
|
||||
settings->setDefault("vsync", "false");
|
||||
|
|
16
src/game.cpp
16
src/game.cpp
|
@ -1629,10 +1629,26 @@ void Game::run()
|
|||
&& client->checkPrivilege("fast");
|
||||
#endif
|
||||
|
||||
irr::core::dimension2d<u32> previous_screen_size(g_settings->getU16("screenW"),
|
||||
g_settings->getU16("screenH"));
|
||||
|
||||
while (device->run()
|
||||
&& !(*kill || g_gamecallback->shutdown_requested
|
||||
|| (server && server->getShutdownRequested()))) {
|
||||
|
||||
const irr::core::dimension2d<u32> ¤t_screen_size =
|
||||
device->getVideoDriver()->getScreenSize();
|
||||
// Verify if window size has changed and save it if it's the case
|
||||
// Ensure evaluating settings->getBool after verifying screensize
|
||||
// First condition is cheaper
|
||||
if (previous_screen_size != current_screen_size &&
|
||||
current_screen_size != irr::core::dimension2d<u32>(0,0) &&
|
||||
g_settings->getBool("autosave_screensize")) {
|
||||
g_settings->setU16("screenW", current_screen_size.Width);
|
||||
g_settings->setU16("screenH", current_screen_size.Height);
|
||||
previous_screen_size = current_screen_size;
|
||||
}
|
||||
|
||||
/* Must be called immediately after a device->run() call because it
|
||||
* uses device->getTimer()->getTime()
|
||||
*/
|
||||
|
|
|
@ -262,8 +262,24 @@ void GUIEngine::run()
|
|||
|
||||
unsigned int text_height = g_fontengine->getTextHeight();
|
||||
|
||||
while(m_device->run() && (!m_startgame) && (!m_kill))
|
||||
{
|
||||
irr::core::dimension2d<u32> previous_screen_size(g_settings->getU16("screenW"),
|
||||
g_settings->getU16("screenH"));
|
||||
|
||||
while (m_device->run() && (!m_startgame) && (!m_kill)) {
|
||||
|
||||
const irr::core::dimension2d<u32> ¤t_screen_size =
|
||||
m_device->getVideoDriver()->getScreenSize();
|
||||
// Verify if window size has changed and save it if it's the case
|
||||
// Ensure evaluating settings->getBool after verifying screensize
|
||||
// First condition is cheaper
|
||||
if (previous_screen_size != current_screen_size &&
|
||||
current_screen_size != irr::core::dimension2d<u32>(0,0) &&
|
||||
g_settings->getBool("autosave_screensize")) {
|
||||
g_settings->setU16("screenW", current_screen_size.Width);
|
||||
g_settings->setU16("screenH", current_screen_size.Height);
|
||||
previous_screen_size = current_screen_size;
|
||||
}
|
||||
|
||||
//check if we need to update the "upper left corner"-text
|
||||
if (text_height != g_fontengine->getTextHeight()) {
|
||||
updateTopLeftTextSize();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue