Main Menu: Add get_clientmodpath API (#5912)
authorElijah Duffy <enduffy2014@outlook.com>
Tue, 6 Jun 2017 12:34:31 +0000 (05:34 -0700)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Tue, 6 Jun 2017 12:34:31 +0000 (14:34 +0200)
Add `core.get_clientmodpath` to main menu API (also possible in async calls).

doc/menu_lua_api.txt
src/script/lua_api/l_mainmenu.cpp
src/script/lua_api/l_mainmenu.h

index 074bc962d4349144ecfea2766247bf90cbed0101..a9392ff9350183dba78981f7f05c8a399442e2ae 100644 (file)
@@ -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
 ----------------
index dc8654960b04b3ecc9c4c90e587d6c9b033bea25..3889718145805ead9c8f9f9550b608dfcc472a80 100644 (file)
@@ -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)
 }
-
index d4946bab1cd5536e34b7fcc6cf98f00ed46671b1..b5015add3705d50698699da85872a3a66af11f7b 100644 (file)
@@ -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);