From b6faaf1e197e77572d11d91eea88cdcef5ad851c Mon Sep 17 00:00:00 2001 From: Arthur <spaddlewit@gmail.com> Date: Fri, 23 Feb 2024 10:02:41 -0500 Subject: [PATCH] Support passing name of music as a parameter --- src/lua_baselib.c | 3 ++- src/s_sound.c | 13 +++++++++++-- src/s_sound.h | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/lua_baselib.c b/src/lua_baselib.c index b191dba62b..1125ef7f84 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -3718,7 +3718,8 @@ static int musicdef_get(lua_State *L) static int lib_sMusicInfo(lua_State *L) { - LUA_PushUserdata(L, S_MusicInfo(), META_MUSICDEF); + const char *music_name = lua_tolstring(L, 1, NULL); + LUA_PushUserdata(L, S_MusicInfo(music_name), META_MUSICDEF); return 1; } diff --git a/src/s_sound.c b/src/s_sound.c index 0654e705f8..1a04e9ab87 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -1801,12 +1801,21 @@ UINT32 S_GetMusicLength(void) return I_GetSongLength(); } -musicdef_t *S_MusicInfo(void) +// +// S_MusicInfo +// +// Returns metadata about supplied music +// If name is NULL, returns the currently playing music (if any) +// +musicdef_t *S_MusicInfo(const char *name) { + if (!name) + name = music_name; + musicdef_t *def; for (def = musicdefstart; def; def = def->next) { - if (strcasecmp(def->name, music_name) == 0) + if (strcasecmp(def->name, name) == 0) return def; } diff --git a/src/s_sound.h b/src/s_sound.h index 909a77e081..98aebcc27c 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -221,7 +221,7 @@ boolean S_PrepareSoundTest(void); UINT32 S_GetMusicLength(void); // Get MUSICDEF of Music -musicdef_t *S_MusicInfo(void); +musicdef_t *S_MusicInfo(const char *name); // Set LoopPoint of Music boolean S_SetMusicLoopPoint(UINT32 looppoint); -- GitLab