diff --git a/builtin/mainmenu/init.lua b/builtin/mainmenu/init.lua index 4f89a0d79..6ad2aa88a 100644 --- a/builtin/mainmenu/init.lua +++ b/builtin/mainmenu/init.lua @@ -38,21 +38,25 @@ dofile(menupath .. DIR_DELIM .. "gamemgr.lua") dofile(menupath .. DIR_DELIM .. "modmgr.lua") dofile(menupath .. DIR_DELIM .. "store.lua") dofile(menupath .. DIR_DELIM .. "dlg_config_world.lua") -dofile(menupath .. DIR_DELIM .. "dlg_create_world.lua") -dofile(menupath .. DIR_DELIM .. "dlg_delete_mod.lua") -dofile(menupath .. DIR_DELIM .. "dlg_delete_world.lua") -dofile(menupath .. DIR_DELIM .. "dlg_rename_modpack.lua") dofile(menupath .. DIR_DELIM .. "tab_credits.lua") dofile(menupath .. DIR_DELIM .. "tab_mods.lua") -dofile(menupath .. DIR_DELIM .. "tab_multiplayer.lua") -dofile(menupath .. DIR_DELIM .. "tab_server.lua") dofile(menupath .. DIR_DELIM .. "tab_settings.lua") -dofile(menupath .. DIR_DELIM .. "tab_singleplayer.lua") -dofile(menupath .. DIR_DELIM .. "tab_texturepacks.lua") -dofile(menupath .. DIR_DELIM .. "textures.lua") +if PLATFORM ~= "Android" 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") + dofile(menupath .. DIR_DELIM .. "dlg_rename_modpack.lua") + dofile(menupath .. DIR_DELIM .. "tab_multiplayer.lua") + dofile(menupath .. DIR_DELIM .. "tab_server.lua") + dofile(menupath .. DIR_DELIM .. "tab_singleplayer.lua") + dofile(menupath .. DIR_DELIM .. "tab_texturepacks.lua") + dofile(menupath .. DIR_DELIM .. "textures.lua") +else + dofile(menupath .. DIR_DELIM .. "tab_simple_main.lua") +end -------------------------------------------------------------------------------- -local function main_event_handler(tabview,event) +local function main_event_handler(tabview, event) if event == "MenuQuit" then core.close() end @@ -61,55 +65,95 @@ end -------------------------------------------------------------------------------- local function init_globals() - --init gamedata + -- Init gamedata gamedata.worldindex = 0 - menudata.worldlist = filterlist.create( - core.get_worlds, - compare_worlds, - function(element,uid) - if element.name == uid then - return true - end - return false - end, --unique id compare fct - function(element,gameid) - if element.gameid == gameid then - return true - end - return false - end --filter fct - ) - menudata.worldlist:add_sort_mechanism("alphabetic",sort_worlds_alphabetic) - menudata.worldlist:set_sortmode("alphabetic") + if PLATFORM ~= "Android" then + menudata.worldlist = filterlist.create( + core.get_worlds, + compare_worlds, + -- Unique id comparison function + function(element, uid) + return element.name == uid + end, + -- Filter function + function(element, gameid) + return element.gameid == gameid + end + ) - if not core.setting_get("menu_last_game") then - local default_game = core.setting_get("default_game") or "minetest" - core.setting_set("menu_last_game", default_game ) + menudata.worldlist:add_sort_mechanism("alphabetic", sort_worlds_alphabetic) + menudata.worldlist:set_sortmode("alphabetic") + + if not core.setting_get("menu_last_game") then + local default_game = core.setting_get("default_game") or "minetest" + core.setting_set("menu_last_game", default_game ) + end + + mm_texture.init() + else + local world_list = core.get_worlds() + + local found_singleplayerworld = false + + for world in pairs(world_list) do + if world.name == "singleplayerworld" then + found_singleplayerworld = true + gamedata.worldindex = i + break + end + end + + if not found_singleplayerworld then + core.create_world("singleplayerworld", 1) + + local world_list = core.get_worlds() + + for world in pairs(world_list) do + if world.name == "singleplayerworld" then + gamedata.worldindex = i + return + end + end + end end - mm_texture.init() - - --create main tabview + -- Create main tabview local tv_main = tabview_create("maintab",{x=12,y=5.2},{x=0,y=0}) - tv_main:set_autosave_tab(true) - tv_main:add(tab_singleplayer) - tv_main:add(tab_multiplayer) - tv_main:add(tab_server) + if PLATFORM ~= "Android" then + tv_main:set_autosave_tab(true) + end + if PLATFORM ~= "Android" then + tv_main:add(tab_singleplayer) + tv_main:add(tab_multiplayer) + tv_main:add(tab_server) + else + tv_main:add(tab_simple_main) + end tv_main:add(tab_settings) - tv_main:add(tab_texturepacks) + if PLATFORM ~= "Android" then + tv_main:add(tab_texturepacks) + end tv_main:add(tab_mods) tv_main:add(tab_credits) tv_main:set_global_event_handler(main_event_handler) - tv_main:set_tab(core.setting_get("maintab_LAST")) + if PLATFORM == "Android" then + tv_main:set_fixed_size(false) + else + tv_main:set_tab(core.setting_get("maintab_LAST")) + end ui.set_default("maintab") tv_main:show() - --create modstore ui - modstore.init({x=12,y=8},4,3) + -- Create modstore ui + if PLATFORM == "Android" then + modstore.init({x=12, y=6}, 3, 2) + else + modstore.init({x=12, y=8}, 4, 3) + end ui.update() @@ -117,3 +161,4 @@ local function init_globals() end init_globals() + diff --git a/builtin/mainmenu/init_android.lua b/builtin/mainmenu/init_android.lua deleted file mode 100644 index 348923fa5..000000000 --- a/builtin/mainmenu/init_android.lua +++ /dev/null @@ -1,102 +0,0 @@ ---Minetest ---Copyright (C) 2014 sapier --- ---This program is free software; you can redistribute it and/or modify ---it under the terms of the GNU Lesser General Public License as published by ---the Free Software Foundation; either version 2.1 of the License, or ---(at your option) any later version. --- ---This program is distributed in the hope that it will be useful, ---but WITHOUT ANY WARRANTY; without even the implied warranty of ---MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ---GNU Lesser General Public License for more details. --- ---You should have received a copy of the GNU Lesser General Public License along ---with this program; if not, write to the Free Software Foundation, Inc., ---51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -mt_color_grey = "#AAAAAA" -mt_color_blue = "#0000DD" -mt_color_green = "#00DD00" -mt_color_dark_green = "#003300" - ---marker for android specific code -ANDROID = true - -local menupath = core.get_mainmenu_path() -local basepath = core.get_builtin_path() -defaulttexturedir = core.get_texturepath_share() .. DIR_DELIM .. "base" .. - DIR_DELIM .. "pack" .. DIR_DELIM - -dofile(basepath .. DIR_DELIM .. "common" .. DIR_DELIM .. "async_event.lua") -dofile(basepath .. DIR_DELIM .. "common" .. DIR_DELIM .. "filterlist.lua") -dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "buttonbar.lua") -dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "dialog.lua") -dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "tabview.lua") -dofile(basepath .. DIR_DELIM .. "fstk" .. DIR_DELIM .. "ui.lua") -dofile(menupath .. DIR_DELIM .. "common.lua") -dofile(menupath .. DIR_DELIM .. "gamemgr.lua") -dofile(menupath .. DIR_DELIM .. "modmgr.lua") -dofile(menupath .. DIR_DELIM .. "store.lua") -dofile(menupath .. DIR_DELIM .. "dlg_config_world.lua") -dofile(menupath .. DIR_DELIM .. "tab_simple_main.lua") -dofile(menupath .. DIR_DELIM .. "tab_credits.lua") -dofile(menupath .. DIR_DELIM .. "tab_mods.lua") -dofile(menupath .. DIR_DELIM .. "tab_settings.lua") - --------------------------------------------------------------------------------- -local function main_event_handler(tabview,event) - if event == "MenuQuit" then - core.close() - end - return true -end - -local function init_globals() - --init gamedata - gamedata.worldindex = 0 - - local worldlist = core.get_worlds() - - local found_singleplayerworld = false - - for i=1,#worldlist,1 do - if worldlist[i].name == "singleplayerworld" then - found_singleplayerworld = true - gamedata.worldindex = i - end - end - - if not found_singleplayerworld then - core.create_world("singleplayerworld", 1) - - local worldlist = core.get_worlds() - - for i=1,#worldlist,1 do - if worldlist[i].name == "singleplayerworld" then - gamedata.worldindex = i - end - end - end - - --create main tabview - local tv_main = tabview_create("maintab",{x=12,y=5.2},{x=-0,y=-0}) - tv_main:add(tab_simple_main) - tv_main:add(tab_mods) - tv_main:add(tab_settings) - tv_main:add(tab_credits) - tv_main:set_global_event_handler(main_event_handler) - tv_main:set_fixed_size(false) - ui.set_default("maintab") - tv_main:show() - - --create modstore ui - modstore.init({x=12,y=6},3,2) - - ui.update() - - core.sound_play("main_menu", true) -end - -init_globals() - diff --git a/builtin/mainmenu/tab_settings.lua b/builtin/mainmenu/tab_settings.lua index 630267478..1f8743140 100644 --- a/builtin/mainmenu/tab_settings.lua +++ b/builtin/mainmenu/tab_settings.lua @@ -160,7 +160,7 @@ local function formspec(tabview, name, tabdata) "box[7.75,0;4,4;#999999]" .. "checkbox[8,0;cb_shaders;".. fgettext("Shaders") .. ";" .. dump(core.setting_getbool("enable_shaders")) .. "]" - if not ANDROID then + if PLATFORM ~= "Android" then tab_string = tab_string .. "button[8,4.75;3.75,0.5;btn_change_keys;".. fgettext("Change keys") .. "]" else @@ -176,7 +176,7 @@ local function formspec(tabview, name, tabdata) fgettext("Scaling factor applied to menu elements: ") .. dump(core.setting_get("gui_scaling")) .. "]" - if ANDROID then + if PLATFORM == "Android" then tab_string = tab_string .. "box[4.25,2.75;3.25,2.15;#999999]" .. "checkbox[4.5,2.75;cb_touchscreen_target;".. fgettext("Touch free target") .. ";" diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 4f297c099..e7b0e3745 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -289,7 +289,6 @@ void set_default_settings(Settings *settings) settings->setDefault("enable_particles", "false"); settings->setDefault("video_driver", "ogles1"); settings->setDefault("touchtarget", "true"); - settings->setDefault("main_menu_script","/sdcard/Minetest/builtin/mainmenu/init_android.lua"); settings->setDefault("TMPFolder","/sdcard/Minetest/tmp/"); settings->setDefault("touchscreen_threshold","20"); settings->setDefault("smooth_lighting", "false"); diff --git a/src/porting.h b/src/porting.h index 9be09da75..b6f71103d 100644 --- a/src/porting.h +++ b/src/porting.h @@ -371,6 +371,46 @@ v2u32 getDisplaySize(); v2u32 getWindowSize(); #endif +inline const char * getPlatformName() +{ + return +#if defined(ANDROID) + "Android" +#elif defined(linux) || defined(__linux) || defined(__linux__) + "Linux" +#elif defined(_WIN32) || defined(_WIN64) + "Windows" +#elif defined(__DragonFly__) || defined(__FreeBSD__) || \ + defined(__NetBSD__) || defined(__OpenBSD__) + "BSD" +#elif defined(__APPLE__) && defined(__MACH__) + #if TARGET_OS_MAC + "OSX" + #elif TARGET_OS_IPHONE + "iOS" + #else + "Apple" + #endif +#elif defined(_AIX) + "AIX" +#elif defined(__hpux) + "HP-UX" +#elif defined(__sun) && defined(__SVR4) + "Solaris" +#elif defined(__CYGWIN__) + "Cygwin" +#elif defined(__unix__) || defined(__unix) + #if defined(_POSIX_VERSION) + "Posix" + #else + "Unix" + #endif +#else + "?" +#endif + ; +} + } // namespace porting #ifdef __ANDROID__ diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp index 779819007..1f96373dc 100644 --- a/src/script/cpp_api/s_base.cpp +++ b/src/script/cpp_api/s_base.cpp @@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "filesys.h" #include "log.h" #include "mods.h" +#include "porting.h" #include "util/string.h" @@ -98,6 +99,9 @@ ScriptApiBase::ScriptApiBase() lua_pushstring(m_luastack, DIR_DELIM); lua_setglobal(m_luastack, "DIR_DELIM"); + lua_pushstring(m_luastack, porting::getPlatformName()); + lua_setglobal(m_luastack, "PLATFORM"); + m_server = NULL; m_environment = NULL; m_guiengine = NULL;