diff options
author | sfan5 <sfan5@live.de> | 2020-04-10 22:53:08 +0200 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2020-04-11 13:12:51 +0200 |
commit | 5f3a17eb65c1ad9259f03bde346a8d69fe0c1069 (patch) | |
tree | 12b575647f8b76a88ff4dea6027621d5a32aeeb2 /src/script | |
parent | 054c5dfaa35dd79560a465ccc0ef214cb5f34c88 (diff) | |
download | minetest-5f3a17eb65c1ad9259f03bde346a8d69fe0c1069.tar.gz minetest-5f3a17eb65c1ad9259f03bde346a8d69fe0c1069.tar.bz2 minetest-5f3a17eb65c1ad9259f03bde346a8d69fe0c1069.zip |
Implement minetest.sound_fade()
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/lua_api/l_client.cpp | 22 | ||||
-rw-r--r-- | src/script/lua_api/l_client.h | 6 | ||||
-rw-r--r-- | src/script/lua_api/l_nodemeta.cpp | 2 |
3 files changed, 27 insertions, 3 deletions
diff --git a/src/script/lua_api/l_client.cpp b/src/script/lua_api/l_client.cpp index fba182492..e30c05260 100644 --- a/src/script/lua_api/l_client.cpp +++ b/src/script/lua_api/l_client.cpp @@ -209,7 +209,7 @@ int ModApiClient::l_gettext(lua_State *L) return 1; } -// get_node(pos) +// get_node_or_nil(pos) // pos = {x=num, y=num, z=num} int ModApiClient::l_get_node_or_nil(lua_State *L) { @@ -228,6 +228,7 @@ int ModApiClient::l_get_node_or_nil(lua_State *L) return 1; } +// get_langauge() int ModApiClient::l_get_language(lua_State *L) { #ifdef _WIN32 @@ -244,6 +245,7 @@ int ModApiClient::l_get_language(lua_State *L) return 2; } +// get_wielded_item() int ModApiClient::l_get_wielded_item(lua_State *L) { Client *client = getClient(L); @@ -266,12 +268,14 @@ int ModApiClient::l_get_meta(lua_State *L) return 1; } +// sound_play(spec, parameters) int ModApiClient::l_sound_play(lua_State *L) { ISoundManager *sound = getClient(L)->getSoundManager(); SimpleSoundSpec spec; read_soundspec(L, 1, spec); + float gain = 1.0f; float pitch = 1.0f; bool looped = false; @@ -293,21 +297,32 @@ int ModApiClient::l_sound_play(lua_State *L) } } - handle = sound->playSound(spec.name, looped, gain * spec.gain, 0.0f, pitch); + handle = sound->playSound(spec.name, looped, gain * spec.gain, spec.fade, pitch); lua_pushinteger(L, handle); return 1; } +// sound_stop(handle) int ModApiClient::l_sound_stop(lua_State *L) { - u32 handle = luaL_checkinteger(L, 1); + s32 handle = luaL_checkinteger(L, 1); getClient(L)->getSoundManager()->stopSound(handle); return 0; } +// sound_fade(handle, step, gain) +int ModApiClient::l_sound_fade(lua_State *L) +{ + s32 handle = luaL_checkinteger(L, 1); + float step = readParam<float>(L, 2); + float gain = readParam<float>(L, 3); + getClient(L)->getSoundManager()->fadeSound(handle, step, gain); + return 0; +} + // get_server_info() int ModApiClient::l_get_server_info(lua_State *L) { @@ -426,6 +441,7 @@ void ModApiClient::Initialize(lua_State *L, int top) API_FCT(get_meta); API_FCT(sound_play); API_FCT(sound_stop); + API_FCT(sound_fade); API_FCT(get_server_info); API_FCT(get_item_def); API_FCT(get_node_def); diff --git a/src/script/lua_api/l_client.h b/src/script/lua_api/l_client.h index 6d1f70b1d..5dc3efdad 100644 --- a/src/script/lua_api/l_client.h +++ b/src/script/lua_api/l_client.h @@ -69,6 +69,7 @@ private: // get_node(pos) static int l_get_node_or_nil(lua_State *L); + // get_language() static int l_get_language(lua_State *L); // get_wielded_item() @@ -77,10 +78,15 @@ private: // get_meta(pos) static int l_get_meta(lua_State *L); + // sound_play(spec, parameters) static int l_sound_play(lua_State *L); + // sound_stop(handle) static int l_sound_stop(lua_State *L); + // sound_fade(handle, step, gain) + static int l_sound_fade(lua_State *L); + // get_server_info() static int l_get_server_info(lua_State *L); diff --git a/src/script/lua_api/l_nodemeta.cpp b/src/script/lua_api/l_nodemeta.cpp index 229ce73db..57052cb42 100644 --- a/src/script/lua_api/l_nodemeta.cpp +++ b/src/script/lua_api/l_nodemeta.cpp @@ -55,11 +55,13 @@ Metadata* NodeMetaRef::getmeta(bool auto_create) void NodeMetaRef::clearMeta() { + SANITY_CHECK(!m_is_local); m_env->getMap().removeNodeMetadata(m_p); } void NodeMetaRef::reportMetadataChange(const std::string *name) { + SANITY_CHECK(!m_is_local); // NOTE: This same code is in rollback_interface.cpp // Inform other things that the metadata has changed NodeMetadata *meta = dynamic_cast<NodeMetadata*>(m_meta); |