From c64686d8c6249394183e17f6b8b16e47a87c0597 Mon Sep 17 00:00:00 2001 From: mazmazz Date: Sat, 18 Aug 2018 20:20:18 -0400 Subject: [PATCH] I_GetMusicLoopPoint and I_SetMusicLoopPoint for Lua * Fix S_GetMusicLength for player compatibility --- src/lua_baselib.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/lua_baselib.c b/src/lua_baselib.c index e7cd69689..83aab8430 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -2268,8 +2268,53 @@ static int lib_sSpeedMusic(lua_State *L) #ifdef HAVE_LUA_MUSICPLUS static int lib_sGetMusicLength(lua_State *L) { + player_t *player = NULL; NOHUD - lua_pushinteger(L, (UINT32)S_GetMusicLength()); + if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) + { + player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); + if (!player) + return LUA_ErrInvalid(L, "player_t"); + } + if (!player || P_IsLocalPlayer(player)) + lua_pushinteger(L, (int)S_GetMusicLength()); + else + lua_pushnil(L); + return 1; +} + +static int lib_sSetMusicLoopPoint(lua_State *L) +{ + UINT32 looppoint = (UINT32)luaL_checkinteger(L, 1); + player_t *player = NULL; + NOHUD + if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) + { + player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); + if (!player) + return LUA_ErrInvalid(L, "player_t"); + } + if (!player || P_IsLocalPlayer(player)) + lua_pushboolean(L, S_SetMusicLoopPoint(looppoint)); + else + lua_pushnil(L); + return 1; +} + +static int lib_sGetMusicLoopPoint(lua_State *L) +{ + player_t *player = NULL; + NOHUD + if (!lua_isnone(L, 2) && lua_isuserdata(L, 2)) + { + player = *((player_t **)luaL_checkudata(L, 2, META_PLAYER)); + if (!player) + return LUA_ErrInvalid(L, "player_t"); + } + if (!player || P_IsLocalPlayer(player)) + lua_pushinteger(L, (int)S_GetMusicLoopPoint()); + else + lua_pushnil(L); return 1; } @@ -2851,6 +2896,8 @@ static luaL_Reg lib[] = { {"S_SpeedMusic",lib_sSpeedMusic}, #ifdef HAVE_LUA_MUSICPLUS {"S_GetMusicLength",lib_sGetMusicLength}, + {"S_SetMusicLoopPoint",lib_sSetMusicLoopPoint}, + {"S_GetMusicLoopPoint",lib_sGetMusicLoopPoint}, {"S_SetMusicPosition",lib_sSetMusicPosition}, {"S_GetMusicPosition",lib_sGetMusicPosition}, {"S_PauseMusic",lib_sPauseMusic},