diff --git a/builtin/mainmenu/init.lua b/builtin/mainmenu/init.lua index ea64bf03c..1861a835e 100644 --- a/builtin/mainmenu/init.lua +++ b/builtin/mainmenu/init.lua @@ -24,6 +24,10 @@ mt_color_dark_green = "#25C191" local menupath = core.get_mainmenu_path() local basepath = core.get_builtin_path() +local menustyle = core.settings:get("main_menu_style") +if menustyle == "auto" then + menustyle = PLATFORM == "Android" and "simple" or "full" +end defaulttexturedir = core.get_texturepath_share() .. DIR_DELIM .. "base" .. DIR_DELIM .. "pack" .. DIR_DELIM @@ -40,7 +44,7 @@ dofile(menupath .. DIR_DELIM .. "textures.lua") dofile(menupath .. DIR_DELIM .. "dlg_config_world.lua") dofile(menupath .. DIR_DELIM .. "dlg_settings_advanced.lua") -if PLATFORM ~= "Android" then +if menustyle ~= "simple" then dofile(menupath .. DIR_DELIM .. "dlg_create_world.lua") dofile(menupath .. DIR_DELIM .. "dlg_delete_mod.lua") dofile(menupath .. DIR_DELIM .. "dlg_delete_world.lua") @@ -52,7 +56,7 @@ local tabs = {} tabs.settings = dofile(menupath .. DIR_DELIM .. "tab_settings.lua") tabs.mods = dofile(menupath .. DIR_DELIM .. "tab_mods.lua") tabs.credits = dofile(menupath .. DIR_DELIM .. "tab_credits.lua") -if PLATFORM == "Android" then +if menustyle == "simple" then tabs.simple_main = dofile(menupath .. DIR_DELIM .. "tab_simple_main.lua") else tabs.local_game = dofile(menupath .. DIR_DELIM .. "tab_local.lua") @@ -73,7 +77,7 @@ local function init_globals() -- Init gamedata gamedata.worldindex = 0 - if PLATFORM == "Android" then + if menustyle == "simple" then local world_list = core.get_worlds() local world_index @@ -128,7 +132,7 @@ local function init_globals() -- Create main tabview local tv_main = tabview_create("maintab", {x = 12, y = 5.4}, {x = 0, y = 0}) - if PLATFORM == "Android" then + if menustyle == "simple" then tv_main:add(tabs.simple_main) tv_main:add(tabs.settings) else @@ -145,7 +149,7 @@ local function init_globals() tv_main:set_global_event_handler(main_event_handler) tv_main:set_fixed_size(false) - if PLATFORM ~= "Android" then + if menustyle ~= "simple" then tv_main:set_tab(core.settings:get("maintab_LAST")) end ui.set_default("maintab") diff --git a/builtin/mainmenu/init_simple.lua b/builtin/mainmenu/init_simple.lua deleted file mode 100644 index 298bd834e..000000000 --- a/builtin/mainmenu/init_simple.lua +++ /dev/null @@ -1,4 +0,0 @@ --- helper file to be able to debug the simple menu on PC --- without messing around with actual menu code! -PLATFORM = "Android" -dofile("builtin/mainmenu/init.lua") diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index de7a3dda2..c515b19ed 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -1241,6 +1241,12 @@ curl_file_download_timeout (cURL file download timeout) int 300000 # Makes DirectX work with LuaJIT. Disable if it causes troubles. high_precision_fpu (High-precision FPU) bool true +# Changes the main menu UI: +# - Full: Multple singleplayer worlds, subgame choice, texture pack chooser, etc. +# - Simple: One singleplayer world, no subgame or texture pack choosers. May be necessary for smaller screens. +# - Auto: Simple on Android, full on everything else. +main_menu_style (Main menu style) enum auto auto,full,simple + # Replaces the default main menu with a custom one. main_menu_script (Main menu script) string diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 1d8b1ccdc..f6a28633b 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -255,6 +255,7 @@ void set_default_settings(Settings *settings) settings->setDefault("joystick_frustum_sensitivity", "170"); // Main menu + settings->setDefault("main_menu_style", "auto"); settings->setDefault("main_menu_path", ""); settings->setDefault("main_menu_mod_mgr", "1"); settings->setDefault("main_menu_game_mgr", "0");