diff options
Diffstat (limited to 'src/crepe/facade/Sound.h')
-rw-r--r-- | src/crepe/facade/Sound.h | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/src/crepe/facade/Sound.h b/src/crepe/facade/Sound.h index 4c68f32..b0b80f8 100644 --- a/src/crepe/facade/Sound.h +++ b/src/crepe/facade/Sound.h @@ -1,28 +1,31 @@ #pragma once -#include <memory> #include <soloud/soloud.h> #include <soloud/soloud_wav.h> -#include "../api/Asset.h" +#include "../Resource.h" namespace crepe { +class SoundContext; + /** * \brief Sound resource facade * * This class is a wrapper around a \c SoLoud::Wav instance, which holds a * single sample. It is part of the sound facade. */ -class Sound { +class Sound : public Resource { public: + Sound(const Asset & src); + ~Sound(); // dbg_trace /** * \brief Pause this sample * * Pauses this sound if it is playing, or does nothing if it is already paused. The playhead * position is saved, such that calling \c play() after this function makes the sound resume. */ - void pause(); + void pause(SoundContext & ctx); /** * \brief Play this sample * @@ -32,7 +35,7 @@ public: * \c play() while the sound is already playing causes multiple instances of the sample to * play simultaniously. The sample started last is the one that is controlled afterwards. */ - void play(); + void play(SoundContext & ctx); /** * \brief Reset playhead position * @@ -40,13 +43,13 @@ public: * from the start of the sample. If the sound is not paused before calling this function, * this function will stop playback. */ - void rewind(); + void rewind(SoundContext & ctx); /** * \brief Set playback volume / gain * * \param volume Volume (0 = muted, 1 = full volume) */ - void set_volume(float volume); + void set_volume(SoundContext & ctx, float volume); /** * \brief Get playback volume / gain * @@ -58,7 +61,7 @@ public: * * \param looping Looping behavior (false = one-shot, true = loop) */ - void set_looping(bool looping); + void set_looping(SoundContext & ctx, bool looping); /** * \brief Get looping behavior * @@ -66,13 +69,6 @@ public: */ bool get_looping() const { return this->looping; } -public: - Sound(const char * src); - Sound(std::unique_ptr<Asset> res); - -private: - void load(std::unique_ptr<Asset> res); - private: SoLoud::Wav sample; SoLoud::handle handle; |