From 76b53b5f717542e47e2039448e9d616936ba7855 Mon Sep 17 00:00:00 2001 From: cat Date: Fri, 5 Sep 2025 12:21:40 +0300 Subject: [PATCH] Sound has states on it now --- src/ChargeAudio.hpp | 4 ++++ src/Sound.cpp | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/ChargeAudio.hpp b/src/ChargeAudio.hpp index a846305..d5a0140 100644 --- a/src/ChargeAudio.hpp +++ b/src/ChargeAudio.hpp @@ -13,11 +13,14 @@ using namespace Corrade; using namespace _ma; class Sound { public: + enum SoundState { Idle, Playing, Paused, Finished }; + ~Sound(); void Play(); void Pause(); void Reset(); + SoundState GetState(); void SetPosition(Magnum::Vector3 position); Magnum::Vector3 GetPosition(); void SetVolume(float value); @@ -27,6 +30,7 @@ private: Sound(); class Engine *baseEngine; ma_sound maSound; + SoundState state = SoundState::Idle; friend class Engine; }; diff --git a/src/Sound.cpp b/src/Sound.cpp index 08b64e3..9daf8e2 100644 --- a/src/Sound.cpp +++ b/src/Sound.cpp @@ -6,9 +6,19 @@ using namespace ChargeAudio; Sound::Sound() {} Sound::~Sound() { ma_sound_uninit(&maSound); } +Sound::SoundState Sound::GetState() { return state; } + // Controls -void Sound::Play() { ma_sound_start(&maSound); } -void Sound::Pause() { ma_sound_stop(&maSound); } +void Sound::Play() { + ma_sound_start(&maSound); + state = Sound::SoundState::Playing; +} + +void Sound::Pause() { + ma_sound_stop(&maSound); + state = Sound::SoundState::Paused; +} + void Sound::Reset() { ma_sound_seek_to_pcm_frame(&maSound, 0); } void Sound::SetPosition(Magnum::Vector3 position) {