diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp index df42a8e3..aef2864f 100644 --- a/src/client/clientlauncher.cpp +++ b/src/client/clientlauncher.cpp @@ -36,6 +36,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "clientlauncher.h" #include "version.h" +#ifdef __ANDROID__ +#include "defaultsettings.h" +#endif #ifdef __IOS__ namespace irr { class CIrrDeviceiOS : public IrrlichtDevice { @@ -539,8 +542,13 @@ bool ClientLauncher::create_engine_device() { // Resolution selection bool fullscreen = g_settings->getBool("fullscreen"); +#if defined(__ANDROID__) || defined(__IOS__) + u16 screenW = 0; + u16 screenH = 0; +#else u16 screenW = g_settings->getU16("screenW"); u16 screenH = g_settings->getU16("screenH"); +#endif // bpp, fsaa, vsync bool vsync = g_settings->getBool("vsync"); @@ -592,28 +600,7 @@ bool ClientLauncher::create_engine_device() #ifdef __ANDROID__ // Apply settings according to screen size // We can get real screen size only after device initialization finished - float x_inches = porting::getWindowSize().X / - (160.f * porting::getDisplayDensity()); - if (x_inches <= 3.7) { - // small 4" phones - g_settings->setFloat("hud_scaling", 0.55); - g_settings->setU16("font_size", TTF_DEFAULT_FONT_SIZE - 1); - g_settings->setFloat("mouse_sensitivity", 0.3); - } else if (x_inches > 3.7 && x_inches <= 4.5) { - // medium phones - g_settings->setFloat("hud_scaling", 0.6); - g_settings->setU16("font_size", TTF_DEFAULT_FONT_SIZE - 1); - g_settings->setS16("selectionbox_width", 6); - } else if (x_inches > 4.5 && x_inches <= 5.5) { - // large 6" phones - g_settings->setFloat("hud_scaling", 0.7); - g_settings->setFloat("mouse_sensitivity", 0.15); - g_settings->setS16("selectionbox_width", 6); - } else if (x_inches > 5.5 && x_inches <= 6.5) { - // 7" tablets - g_settings->setFloat("hud_scaling", 0.9); - g_settings->setS16("selectionbox_width", 6); - } + set_default_settings(g_settings); #endif #ifdef __IOS__ CIrrDeviceiOS* dev = (CIrrDeviceiOS*) device; diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index e5ce7567..5dd3d6bb 100755 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -399,8 +399,6 @@ void set_default_settings(Settings *settings) { // Mobile Platform #if defined(__ANDROID__) || defined(__IOS__) - settings->setDefault("screenW", "0"); - settings->setDefault("screenH", "0"); settings->setDefault("fullscreen", "true"); settings->setDefault("touchtarget", "true"); settings->setDefault("touchscreen_threshold", "20"); @@ -510,6 +508,32 @@ void set_default_settings(Settings *settings) { // Set font_path settings->setDefault("mono_font_path", "/system/fonts/DroidSansMono.ttf"); settings->setDefault("fallback_font_path", "/system/fonts/DroidSans.ttf"); + + v2u32 window_size = porting::getWindowSize(); + if (window_size.X > 0) { + float x_inches = window_size.X / + (160.f * porting::getDisplayDensity()); + if (x_inches <= 3.7) { + // small 4" phones + g_settings->setFloat("hud_scaling", 0.55); + g_settings->setU16("font_size", TTF_DEFAULT_FONT_SIZE - 1); + g_settings->setFloat("mouse_sensitivity", 0.3); + } else if (x_inches > 3.7 && x_inches <= 4.5) { + // medium phones + g_settings->setFloat("hud_scaling", 0.6); + g_settings->setU16("font_size", TTF_DEFAULT_FONT_SIZE - 1); + g_settings->setS16("selectionbox_width", 6); + } else if (x_inches > 4.5 && x_inches <= 5.5) { + // large 6" phones + g_settings->setFloat("hud_scaling", 0.7); + g_settings->setFloat("mouse_sensitivity", 0.15); + g_settings->setS16("selectionbox_width", 6); + } else if (x_inches > 5.5 && x_inches <= 6.5) { + // 7" tablets + g_settings->setFloat("hud_scaling", 0.9); + g_settings->setS16("selectionbox_width", 6); + } + } #endif // Android // iOS Settings diff --git a/src/porting.cpp b/src/porting.cpp index aa14185e..8d785a95 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -755,6 +755,8 @@ void initIrrlicht(irr::IrrlichtDevice *device_) v2u32 getWindowSize() { + if (device == NULL) + return v2u32(0, 0); return device->getVideoDriver()->getScreenSize(); } diff --git a/src/porting_android.cpp b/src/porting_android.cpp index 38e38cf8..e70a9707 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -322,6 +322,6 @@ float getDisplayDensity() } v2u32 getDisplaySize() { - return v2u32(0, 0); + return porting::getWindowSize(); } } diff --git a/src/porting_ios.cpp b/src/porting_ios.cpp index 9db5c9be..f95e5d86 100644 --- a/src/porting_ios.cpp +++ b/src/porting_ios.cpp @@ -56,7 +56,7 @@ namespace porting { } v2u32 getDisplaySize() { - return v2u32(0,0); + return porting::getWindowSize(); } void setViewController(void *v) {