From 4b6a9d81883fc8e12a0a8ed093a878fd2b6683a2 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Wed, 14 Feb 2024 14:11:45 +0100 Subject: [PATCH] =?UTF-8?q?-=20[NEW]=20stopmusic()=20accepta=20com=20a=20p?= =?UTF-8?q?ar=C3=A0metre=20els=20milisegons=20que=20tardar=C3=A0=20en=20fa?= =?UTF-8?q?dechar=20out=20(per=20defecte=201000ms).=20-=20[NEW]=20musicpos?= =?UTF-8?q?()=20per=20a=20obtindre=20o=20especificar=20la=20posici=C3=B3?= =?UTF-8?q?=20de=20la=20m=C3=BAsica.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua.cpp | 14 +++++++++++++- mini.cpp | 14 ++++++++++++-- mini.h | 4 +++- version.h | 2 +- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/lua.cpp b/lua.cpp index 58c9dea..857a95a 100644 --- a/lua.cpp +++ b/lua.cpp @@ -754,10 +754,21 @@ extern "C" { } static int cpp_stopmusic(lua_State *L) { - stopmusic(); + const int time = luaL_optinteger(L, 1, 1000); + stopmusic(time); return 0; } + static int cpp_musicpos(lua_State *L) { + if (lua_gettop(L) >= 1) { + musicpos(luaL_checknumber(L, 1)); + return 0; + } else { + lua_pushnumber(L, musicpos()); + return 1; + } + } + static int cpp_loadsound(lua_State *L) { const char* str = luaL_checkstring(L, 1); lua_pushinteger(L,loadsound(str)); @@ -980,6 +991,7 @@ void push_lua_funcs() { lua_pushcfunction(L,cpp_pausemusic); lua_setglobal(L, "pausemusic"); lua_pushcfunction(L,cpp_resumemusic); lua_setglobal(L, "resumemusic"); lua_pushcfunction(L,cpp_stopmusic); lua_setglobal(L, "stopmusic"); + lua_pushcfunction(L,cpp_musicpos); lua_setglobal(L, "musicpos"); lua_pushcfunction(L,cpp_loadsound); lua_setglobal(L, "loadsound"); lua_pushcfunction(L,cpp_freesound); lua_setglobal(L, "freesound"); lua_pushcfunction(L,cpp_playsound); lua_setglobal(L, "playsound"); diff --git a/mini.cpp b/mini.cpp index fbb5b1a..c3ebd9e 100644 --- a/mini.cpp +++ b/mini.cpp @@ -1271,9 +1271,19 @@ void resumemusic() { Mix_ResumeMusic(); } -void stopmusic() { +void stopmusic(const int t) { //Mix_HaltMusic(); - Mix_FadeOutMusic(1000); + Mix_FadeOutMusic(t); +} + +void musicpos(float value) +{ + Mix_SetMusicPosition(value); +} + +float musicpos() +{ + return Mix_GetMusicPosition(music); } int loadsound(const char *filename) { diff --git a/mini.h b/mini.h index d5d23aa..2f364c8 100644 --- a/mini.h +++ b/mini.h @@ -271,7 +271,9 @@ bool freadb(); void playmusic(const char *filename, const int loop=-1); void pausemusic(); void resumemusic(); -void stopmusic(); +void stopmusic(const int t=1000); +void musicpos(float value); +float musicpos(); int loadsound(const char *filename); void freesound(int soundfile); diff --git a/version.h b/version.h index c932b28..5b01d48 100644 --- a/version.h +++ b/version.h @@ -1,3 +1,3 @@ #pragma once -#define MINI_VERSION "0.9.89d" +#define MINI_VERSION "0.9.90d"