aboutsummaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
Diffstat (limited to 'sources')
-rw-r--r--sources/TZR_PlayMusic.c19
-rw-r--r--sources/TZR_StopMusic.c14
-rw-r--r--sources/globals.c1
3 files changed, 34 insertions, 0 deletions
diff --git a/sources/TZR_PlayMusic.c b/sources/TZR_PlayMusic.c
new file mode 100644
index 0000000..10725b6
--- /dev/null
+++ b/sources/TZR_PlayMusic.c
@@ -0,0 +1,19 @@
+#include "TZR_sound.h"
+#include "TZR_globals.h"
+#include "sdl_error.h"
+
+int
+TZR_PlayMusic(const char *path, int loop)
+{
+ if (!___tzr_config.mixer) {
+ fprintf(stderr, "mixer is disabled\n");
+ return -1;
+ }
+ TZR_StopMusic();
+ ___tzr_music = Mix_LoadMUS(path);
+ if (___tzr_music == NULL)
+ return sdl_error(-1);
+ if (Mix_PlayMusic(___tzr_music, loop) < 0)
+ return sdl_error(-1);
+ return 0;
+}
diff --git a/sources/TZR_StopMusic.c b/sources/TZR_StopMusic.c
new file mode 100644
index 0000000..94eda2f
--- /dev/null
+++ b/sources/TZR_StopMusic.c
@@ -0,0 +1,14 @@
+#include "TZR_sound.h"
+#include "TZR_globals.h"
+
+void
+TZR_StopMusic(void)
+{
+ if (!___tzr_config.mixer)
+ return;
+ if (Mix_PlayingMusic())
+ Mix_HaltMusic();
+ if (___tzr_music != NULL)
+ Mix_FreeMusic(___tzr_music);
+ ___tzr_music = NULL;
+}
diff --git a/sources/globals.c b/sources/globals.c
index c968caf..02f9181 100644
--- a/sources/globals.c
+++ b/sources/globals.c
@@ -23,3 +23,4 @@ TZR_KeyState ___tzr_mousestates[256] = {0}; //doc says than mouse button is u8
float ___tzr_scale = 1.0;
int ___tzr_off_x = 1.0;
int ___tzr_off_y = 1.0;
+Mix_Music *___tzr_music = NULL;