19 #ifndef __CU_SOUND_ENGINE_H__
20 #define __CU_SOUND_ENGINE_H__
22 #include <audio/include/AudioEngine.h>
28 #define AENG experimental::AudioEngine
49 #pragma mark Sound Packet
64 const std::string
getKey()
const {
return _key; }
79 SoundPacket(data._key, data._sound, data._loop, data._volume) {}
111 _sndid(-1), _sound(s), _key(k), _loop(l), _volume(v) {}
116 SoundPacket() : _sndid(-1), _sound(nullptr), _key(
""), _loop(false), _volume(0.0f) {}
133 #pragma mark Sound State
153 #pragma mark Sound Engine
176 #pragma mark Allocation
182 SoundEngine() : _musicData(nullptr), _musicProfile(nullptr), _effectProfile(nullptr), _effectData(nullptr) {}
214 #pragma mark Audio Helpers
223 void playMusic(SoundPacket* data);
238 void playEffect(SoundPacket* data,
bool force=
false);
247 static SoundState convertAudioState(AENG::AudioState state);
258 void gcMusic(
int id);
269 void gcEffect(
int id,
const std::string key);
273 #pragma mark Static Accessors
302 #pragma mark Music Management
320 void playMusic(
Sound* sound,
bool loop=
false,
float volume=1.0);
336 SoundState getMusicState()
const;
357 void setMusicLoop(
bool loop);
375 void setMusicVolume(
float volume);
387 return _musicData->
_sndid != -1 ? AENG::getDuration(_musicData->
_sndid) : 0.0f;
400 return _musicData->
_sndid != -1 ? AENG::getCurrentTime(_musicData->
_sndid) : 0.0f;
413 return _musicData->
_sndid != -1 ?
414 AENG::getDuration(_musicData->
_sndid)-AENG::getCurrentTime(_musicData->
_sndid) :
428 void setMusicElapsed(
float time);
442 void setMusicRemaining(
float time);
473 #pragma mark Music Queue
494 void queueMusic(
Sound* sound,
bool loop=
false,
float volume=1.0);
501 const std::vector<const Sound*> getMusicQueue()
const;
520 void skipMusicQueue(
unsigned int steps=0);
524 #pragma mark Sound Effect Management
548 void playEffect(std::string key,
Sound* sound,
bool loop=
false,
float volume=1.0f,
bool force=
false);
568 bool isActiveEffect(std::string key)
const {
return _effectIDs.find(key) != _effectIDs.end(); }
579 SoundState getEffectState(std::string key)
const;
590 bool isEffectLoop(std::string key)
const;
600 void setEffectLoop(std::string key,
bool loop);
611 float getEffectVolume(std::string key)
const;
621 void setEffectVolume(std::string key,
float volume);
634 float getEffectDuration(std::string key)
const;
648 float getEffectElapsed(std::string key)
const;
662 float getEffectRemaining(std::string key)
const;
675 void setEffectElapsed(std::string key,
float time);
688 void setEffectRemaining(std::string key,
float time);
699 void stopEffect(std::string key);
708 void pauseEffect(std::string key);
717 void resumeEffect(std::string key);
726 void restartEffect(std::string key);
733 void stopAllEffects();
738 void pauseAllEffects();
743 void resumeAllEffects();
747 #pragma mark Global Management
size_t getMusicQueueSize() const
Definition: CUSoundEngine.h:508
~SoundPacket()
Definition: CUSoundEngine.h:84
float getMusicElapsed() const
Definition: CUSoundEngine.h:399
float _volume
Definition: CUSoundEngine.h:97
std::deque< std::string > _equeue
Definition: CUSoundEngine.h:173
int getAvailableChannels()
Definition: CUSoundEngine.h:559
SoundEngine()
Definition: CUSoundEngine.h:182
SoundPacket ** _effectData
Definition: CUSoundEngine.h:169
experimental::AudioProfile * _effectProfile
Definition: CUSoundEngine.h:161
bool isMusicLoop() const
Definition: CUSoundEngine.h:345
const Sound * getSound() const
Definition: CUSoundEngine.h:71
std::unordered_map< std::string, int > _effectIDs
Definition: CUSoundEngine.h:171
SoundState
Definition: CUSoundEngine.h:140
bool getMusicVolume() const
Definition: CUSoundEngine.h:366
Definition: CUSoundEngine.h:57
SoundPacket(const std::string &k, Sound *s, bool l, float v)
Definition: CUSoundEngine.h:110
SoundPacket(const SoundPacket &data)
Definition: CUSoundEngine.h:78
const std::string getKey() const
Definition: CUSoundEngine.h:64
experimental::AudioProfile * _musicProfile
Definition: CUSoundEngine.h:159
static SoundEngine * getInstance()
Definition: CUSoundEngine.h:281
bool isActiveEffect(std::string key) const
Definition: CUSoundEngine.h:568
Sound * _sound
Definition: CUSoundEngine.h:91
std::string _key
Definition: CUSoundEngine.h:88
~SoundEngine()
Definition: CUSoundEngine.h:189
std::deque< SoundPacket * > _mqueue
Definition: CUSoundEngine.h:166
SoundPacket * _musicData
Definition: CUSoundEngine.h:164
float getMusicDuration() const
Definition: CUSoundEngine.h:386
float getMusicRemaining() const
Definition: CUSoundEngine.h:412
int _sndid
Definition: CUSoundEngine.h:100
void set(const SoundPacket &data)
Definition: CUSoundEngine.h:123
const Sound * currentMusic() const
Definition: CUSoundEngine.h:329
SoundPacket()
Definition: CUSoundEngine.h:116
Definition: CUSoundEngine.h:45
static SoundEngine * _gEngine
Definition: CUSoundEngine.h:156
bool _loop
Definition: CUSoundEngine.h:94