#include "mixer.h" void Mixer::playSound(std::string_view filename) { Mix_Chunk* chunk = getChunkByFilename(std::string(filename)); if (Mix_PlayChannel(-1, chunk, 0) == -1) { throw mix_error(); } } int Mixer::loopSound(std::string_view filename) { Mix_Chunk* chunk = getChunkByFilename(std::string(filename)); int ret = Mix_PlayChannel(-1, chunk, -1); if (ret == -1) { throw mix_error(); } return ret; } void Mixer::stopChannel(int channel) { Mix_HaltChannel(channel); } Mix_Chunk* Mixer::getChunkByFilename(std::string filename) { if (!sounds_.count(filename)) { Mix_Chunk* sample = Mix_LoadWAV(filename.c_str()); if (!sample) { throw mix_error(); } sounds_[filename] = chunk_ptr(sample); } return sounds_[filename].get(); }