X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=src%2FguiLuaApi.cpp;h=5d3e9dc1241e66f0573b1c95eac77237534026fd;hb=be4670fecfceabd6760153e9a5b4f9868614e573;hp=6bf8df607672e230385dc1a54e764ba8cb209472;hpb=5c7ecdb7c583c98cbe6bdf54ae7a07e6a6a61007;p=dragonfireclient.git diff --git a/src/guiLuaApi.cpp b/src/guiLuaApi.cpp index 6bf8df607..5d3e9dc12 100644 --- a/src/guiLuaApi.cpp +++ b/src/guiLuaApi.cpp @@ -31,6 +31,7 @@ extern "C" { #include "settings.h" #include "filesys.h" #include "convert_json.h" +#include "sound.h" #include "IFileArchive.h" @@ -81,6 +82,7 @@ void guiLuaApi::initialize(lua_State* L,GUIEngine* engine) retval &= API_FCT(set_topleft_text); retval &= API_FCT(get_modpath); retval &= API_FCT(get_gamepath); + retval &= API_FCT(get_texturepath); retval &= API_FCT(get_dirlist); retval &= API_FCT(create_dir); retval &= API_FCT(delete_dir); @@ -92,6 +94,8 @@ void guiLuaApi::initialize(lua_State* L,GUIEngine* engine) retval &= API_FCT(download_file); retval &= API_FCT(get_modstore_details); retval &= API_FCT(get_modstore_list); + retval &= API_FCT(sound_play); + retval &= API_FCT(sound_stop); if (!retval) { //TODO show error @@ -556,7 +560,7 @@ int guiLuaApi::l_get_favorites(lua_State *L) if (servers[i]["clients_max"].asString().size()) { - const char* clients_max_raw = servers[i]["clients"].asString().c_str(); + const char* clients_max_raw = servers[i]["clients_max"].asString().c_str(); char* endptr = 0; int numbervalue = strtol(clients_max_raw,&endptr,10); @@ -821,7 +825,16 @@ int guiLuaApi::l_get_modpath(lua_State *L) int guiLuaApi::l_get_gamepath(lua_State *L) { std::string gamepath - = fs::RemoveRelativePathComponents(porting::path_share + DIR_DELIM + "games" + DIR_DELIM); + = fs::RemoveRelativePathComponents(porting::path_user + DIR_DELIM + "games" + DIR_DELIM); + lua_pushstring(L, gamepath.c_str()); + return 1; +} + +/******************************************************************************/ +int guiLuaApi::l_get_texturepath(lua_State *L) +{ + std::string gamepath + = fs::RemoveRelativePathComponents(porting::path_user + DIR_DELIM + "textures"); lua_pushstring(L, gamepath.c_str()); return 1; } @@ -1050,6 +1063,49 @@ int guiLuaApi::l_get_version(lua_State *L) { return 1; } +/******************************************************************************/ +int guiLuaApi::l_sound_play(lua_State *L) { + GUIEngine* engine = get_engine(L); + + SimpleSoundSpec spec; + if(lua_isnil(L, 1)) + { + } else if(lua_istable(L, 1)){ + lua_getfield(L, 1, "name"); + if(lua_isstring(L, -1)){ + size_t len = 0; + spec.name = lua_tolstring(L, -1, &len); + } + lua_pop(L, 1); + + //luaL_checkfloat(L, 1, "gain", spec.gain); + lua_getfield(L, 1, "gain"); + if(lua_isnumber(L, -1)){ + spec.gain = lua_tonumber(L, -1); + } + lua_pop(L, 1); + } else if(lua_isstring(L, 1)){ + spec.name = luaL_checkstring(L, 1); + } + bool looped = lua_toboolean(L, 2); + + u32 handle = engine->playSound(spec, looped); + + lua_pushinteger(L, handle); + + return 1; +} + +/******************************************************************************/ +int guiLuaApi::l_sound_stop(lua_State *L) { + GUIEngine* engine = get_engine(L); + + u32 handle = luaL_checkinteger(L, 1); + engine->stopSound(handle); + + return 1; +} + /******************************************************************************/ int guiLuaApi::l_download_file(lua_State *L) { GUIEngine* engine = get_engine(L);