From 18744e8894e721907675f06685dba65f151c7150 Mon Sep 17 00:00:00 2001 From: Joakim Hunskaar <joakim.borge.hunskar@gmail.com> Date: Fri, 11 Apr 2025 17:29:43 +0200 Subject: [PATCH] simpler audio API --- .../animationwindow/include/AnimationWindow.h | 2 +- .../subprojects/animationwindow/include/Audio.h | 2 +- .../animationwindow/src/AnimationWindow.cpp | 4 ++-- dependencies/subprojects/animationwindow/src/Audio.cpp | 10 +++++++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/dependencies/subprojects/animationwindow/include/AnimationWindow.h b/dependencies/subprojects/animationwindow/include/AnimationWindow.h index 77d299a..7fcde36 100644 --- a/dependencies/subprojects/animationwindow/include/AnimationWindow.h +++ b/dependencies/subprojects/animationwindow/include/AnimationWindow.h @@ -132,6 +132,6 @@ class AnimationWindow { float get_delta_mouse_wheel() const; // - void play_audio(TDT4102::Audio& audio, bool loop = false, int repeat = 0); + void play_audio(TDT4102::Audio& audio, int loops = 0); }; } // namespace TDT4102 diff --git a/dependencies/subprojects/animationwindow/include/Audio.h b/dependencies/subprojects/animationwindow/include/Audio.h index c4c2579..44324bb 100644 --- a/dependencies/subprojects/animationwindow/include/Audio.h +++ b/dependencies/subprojects/animationwindow/include/Audio.h @@ -24,6 +24,6 @@ namespace TDT4102 { std::filesystem::path src = "non existent file"; void load(); - void play(bool loop, int repeat); // 0 is for play once and stop + void play(int loops = 0); }; } diff --git a/dependencies/subprojects/animationwindow/src/AnimationWindow.cpp b/dependencies/subprojects/animationwindow/src/AnimationWindow.cpp index 37e4650..ea8158e 100644 --- a/dependencies/subprojects/animationwindow/src/AnimationWindow.cpp +++ b/dependencies/subprojects/animationwindow/src/AnimationWindow.cpp @@ -416,7 +416,7 @@ void TDT4102::AnimationWindow::setBackgroundColor(TDT4102::Color newBackgroundCo SDL_RenderClear(rendererHandle); } -void TDT4102::AnimationWindow::play_audio(TDT4102::Audio& audio, bool loop, int repeat) { - audio.play(loop, repeat); +void TDT4102::AnimationWindow::play_audio(TDT4102::Audio& audio, int loops) { + audio.play(loops); } diff --git a/dependencies/subprojects/animationwindow/src/Audio.cpp b/dependencies/subprojects/animationwindow/src/Audio.cpp index 056251a..b335210 100644 --- a/dependencies/subprojects/animationwindow/src/Audio.cpp +++ b/dependencies/subprojects/animationwindow/src/Audio.cpp @@ -35,15 +35,19 @@ void TDT4102::Audio::load() { } -void TDT4102::Audio::play(bool loop, int repeat) { +void TDT4102::Audio::play(int loops) { + + if (loops < 0) { + throw std::runtime_error("Number of loops must be positive!"); + } if(!ready) { load(); } if (isMusic) { - Mix_PlayMusic(mus, loop ? -1 : repeat); + Mix_PlayMusic(mus, loops == 0 ? loops : loops--); } else { - Mix_PlayChannel(-1, sfx, loop ? -1 : repeat); + Mix_PlayChannel(-1, sfx, loops == 0 ? loops-- : loops); } -- GitLab