aboutsummaryrefslogtreecommitdiff
path: root/src/audio_sys.c
diff options
context:
space:
mode:
authorUneven Prankster <unevenprankster@protonmail.com>2023-09-23 19:28:45 -0300
committerUneven Prankster <unevenprankster@protonmail.com>2023-09-23 19:28:45 -0300
commita89f892640cf12f75c7ce18e6e88c70a8d3965ed (patch)
treee917bda607b86cb7c5bd80df2e5abf549d972163 /src/audio_sys.c
parent83505b7be49dbf7789deb814bd159d9c37181d05 (diff)
things can always be nicer :D
Diffstat (limited to 'src/audio_sys.c')
-rw-r--r--src/audio_sys.c108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/audio_sys.c b/src/audio_sys.c
new file mode 100644
index 0000000..f164947
--- /dev/null
+++ b/src/audio_sys.c
@@ -0,0 +1,108 @@
+#include "config.h"
+#include <raylib.h>
+
+// Defines
+
+#define MAX_SOUND 8
+
+Sound sounds[MAX_SOUND] = {0};
+Music track = {0};
+
+// Audio things
+
+i32 load_audio(const char* path)
+{
+ i32 idx = -1;
+
+ for(int i = 0; i < MAX_SOUND; ++i){
+ if(!IsSoundReady(sounds[i])){
+ idx = i;
+ sounds[i] = LoadSound(path);
+ break;
+ }
+ }
+
+ assert(idx != -1);
+ return idx;
+}
+
+void play_audio(i32 idx)
+{
+ assert(idx >= 0 && idx < MAX_SOUND);
+ PlaySound(sounds[idx]);
+}
+
+void pause_audio(i32 idx)
+{
+ assert(idx >= 0 && idx < MAX_SOUND);
+ PauseSound(sounds[idx]);
+}
+
+void resume_audio(i32 idx)
+{
+ assert(idx >= 0 && idx < MAX_SOUND);
+ ResumeSound(sounds[idx]);
+}
+
+// Music things //
+
+void load_music(const char* path)
+{
+ track = LoadMusicStream(path);
+}
+
+void play_music(void)
+{
+ PlayMusicStream(track);
+}
+
+void set_music_loop(b32 loop)
+{
+ track.looping = loop;
+}
+
+void set_music_loop_point(f32 point)
+{
+ track.loopPoint = point;
+}
+
+void pause_music(void)
+{
+ PauseMusicStream(track);
+}
+
+void resume_music(void)
+{
+ ResumeMusicStream(track);
+}
+
+// Main funcs
+
+void set_main_vol(f32 vol)
+{
+ assert(vol >= 0.f);
+ SetMasterVolume(vol);
+}
+
+// Update stuff
+
+void update_audio(void)
+{
+ UpdateMusicStream(track);
+}
+
+void unload_active_audio(void)
+{
+ for(int i = 0; i < MAX_SOUND; ++i){
+ if(IsSoundReady(sounds[i])){
+ StopSound(sounds[i]); //It is probably a good idea to do this...
+ UnloadSound(sounds[i]);
+ }
+ }
+}
+
+void unload_current_music(void)
+{
+ StopMusicStream(track);
+ UnloadMusicStream(track);
+} \ No newline at end of file