1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Implement minetest.sound_fade()

This commit is contained in:
sfan5 2020-04-10 22:53:08 +02:00 committed by Loïc Blot
parent 054c5dfaa3
commit 5f3a17eb65
4 changed files with 34 additions and 3 deletions

View file

@ -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);