From fee5171298606d928d0f718d8ec0eeb2cacc1e71 Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Tue, 6 Jun 2017 05:34:31 -0700 Subject: [PATCH] Main Menu: Add get_clientmodpath API (#5912) Add `core.get_clientmodpath` to main menu API (also possible in async calls). --- doc/menu_lua_api.txt | 4 +++- src/script/lua_api/l_mainmenu.cpp | 12 +++++++++++- src/script/lua_api/l_mainmenu.h | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index 074bc962d..a9392ff93 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -35,6 +35,8 @@ core.get_builtin_path() ^ returns path to builtin root core.get_modpath() (possible in async calls) ^ returns path to global modpath +core.get_clientmodpath() (possible in async calls) +^ returns path to global client-side modpath core.get_modstore_details(modid) (possible in async calls) ^ modid numeric id of mod in modstore ^ returns { @@ -234,7 +236,7 @@ Limitations of Async operations -Limited set of available functions e.g. No access to functions modifying menu like core.start,core.close, core.file_open_dialog - + Class reference ---------------- diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index dc8654960..388971814 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -734,6 +734,15 @@ int ModApiMainMenu::l_get_modpath(lua_State *L) return 1; } +/******************************************************************************/ +int ModApiMainMenu::l_get_clientmodpath(lua_State *L) +{ + std::string modpath = fs::RemoveRelativePathComponents( + porting::path_user + DIR_DELIM + "clientmods" + DIR_DELIM); + lua_pushstring(L, modpath.c_str()); + return 1; +} + /******************************************************************************/ int ModApiMainMenu::l_get_gamepath(lua_State *L) { @@ -1120,6 +1129,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top) API_FCT(set_topleft_text); API_FCT(get_mapgen_names); API_FCT(get_modpath); + API_FCT(get_clientmodpath); API_FCT(get_gamepath); API_FCT(get_texturepath); API_FCT(get_texturepath_share); @@ -1150,6 +1160,7 @@ void ModApiMainMenu::InitializeAsync(lua_State *L, int top) API_FCT(get_favorites); API_FCT(get_mapgen_names); API_FCT(get_modpath); + API_FCT(get_clientmodpath); API_FCT(get_gamepath); API_FCT(get_texturepath); API_FCT(get_texturepath_share); @@ -1162,4 +1173,3 @@ void ModApiMainMenu::InitializeAsync(lua_State *L, int top) API_FCT(get_modstore_list); //API_FCT(gettext); (gettext lib isn't threadsafe) } - diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h index d4946bab1..b5015add3 100644 --- a/src/script/lua_api/l_mainmenu.h +++ b/src/script/lua_api/l_mainmenu.h @@ -108,6 +108,8 @@ private: static int l_get_modpath(lua_State *L); + static int l_get_clientmodpath(lua_State *L); + static int l_get_gamepath(lua_State *L); static int l_get_texturepath(lua_State *L);