3#include <SDL3_mixer/SDL_mixer.h>
8#include "TextureManager.h"
9#include "BackgroundMusic.h"
10#include "SoundEffects.h"
26 if (this_instance ==
nullptr) {
30 throw std::runtime_error(
"SoundManager instance already exists!");
34 for (
auto& it : this->sound_cache) {
35 Mix_FreeChunk(it.second);
38 for (
auto& it : this->music_cache) {
39 Mix_FreeMusic(it.second);
43 SoundManager(SoundManager
const&) =
delete;
44 void operator=(SoundManager
const&) =
delete;
65 static void playSound(SoundEffects sound,
bool canOverlap,
int loops,
int volume,
int channel);
71 static void playMusic(BackgroundMusic sound,
int loops,
int volume,
int milliseconds);
88 static void addSoundEffects(
const std::map<SoundEffects, const char*> &effects);
94 static void addBackgroundMusic(
const std::map<BackgroundMusic, const char*> &backgroundMusic);
96 static SoundManager* getInstance() {
103 std::map<BackgroundMusic, Mix_Music*> music_cache;
104 std::map<SoundEffects, Mix_Chunk*> sound_cache;
105 static SoundManager* this_instance;
107 static void addSingleBackgroundMusic(BackgroundMusic backgroundMusic,
const char* path);
108 static void addSingleSoundEffect(SoundEffects soundEffect,
const char* path);
static void playSound(SoundEffects sound, bool canOverlap, int loops, int volume, int channel)
Handles playing of sound effects.
Definition SoundManager.cpp:53
static void pauseMusic()
Handles pausing music track.
Definition SoundManager.cpp:122
static void addSoundEffects(const std::map< SoundEffects, const char * > &effects)
Initializes sound-effects and adds them to a cache.
Definition SoundManager.cpp:177
static void playMusic(BackgroundMusic sound, int loops, int volume, int milliseconds)
Handles playing of music.
Definition SoundManager.cpp:85
static void pauseSound(int channel)
Handles pausing sound effects (either all or on a specific channel)
Definition SoundManager.cpp:117
static void addBackgroundMusic(const std::map< BackgroundMusic, const char * > &backgroundMusic)
Initializes background-music and adds them to a cache.
Definition SoundManager.cpp:182
static void restartMusic()
Handles resuming music track.
Definition SoundManager.cpp:132
static void restartSound(int channel)
Handles resuming sound effects (either all or on a specific channel)
Definition SoundManager.cpp:127
static void setMusicVolume(int volume)
Volume handling for music track.
Definition SoundManager.cpp:112
static void fadeOutMusic(int ms)
Handles fading out a music track.
Definition SoundManager.cpp:137
static void setSoundVolume(int volume, int channel)
Volume handling for sound effects (either all or on a specific channel)
Definition SoundManager.cpp:107