fix .wav sounds support

This commit is contained in:
MihailRis 2024-06-18 18:17:47 +03:00
parent 0232e9fb23
commit 2395e05a01

View File

@ -161,18 +161,26 @@ assetload::postfunc assetload::sound(
auto cfg = std::dynamic_pointer_cast<SoundCfg>(config); auto cfg = std::dynamic_pointer_cast<SoundCfg>(config);
bool keepPCM = cfg ? cfg->keepPCM : false; bool keepPCM = cfg ? cfg->keepPCM : false;
std::string extension = ".ogg";
std::unique_ptr<audio::Sound> baseSound = nullptr; std::unique_ptr<audio::Sound> baseSound = nullptr;
static std::vector<std::string> extensions {".ogg", ".wav"};
std::string extension;
for (size_t i = 0; i < extensions.size(); i++) {
extension = extensions[i];
// looking for 'sound_name' as base sound // looking for 'sound_name' as base sound
auto soundFile = paths->find(file+extension); auto soundFile = paths->find(file+extension);
if (fs::exists(soundFile)) { if (fs::exists(soundFile)) {
baseSound = audio::load_sound(soundFile, keepPCM); baseSound = audio::load_sound(soundFile, keepPCM);
break;
} }
// looking for 'sound_name_0' as base sound // looking for 'sound_name_0' as base sound
auto variantFile = paths->find(file+"_0"+extension); auto variantFile = paths->find(file+"_0"+extension);
if (fs::exists(variantFile)) { if (fs::exists(variantFile)) {
baseSound = audio::load_sound(variantFile, keepPCM); baseSound = audio::load_sound(variantFile, keepPCM);
break;
}
}
if (baseSound == nullptr) {
throw std::runtime_error("could not to find sound: " + file);
} }
// loading sound variants // loading sound variants
@ -184,9 +192,6 @@ assetload::postfunc assetload::sound(
baseSound->variants.emplace_back(audio::load_sound(variantFile, keepPCM)); baseSound->variants.emplace_back(audio::load_sound(variantFile, keepPCM));
} }
if (baseSound == nullptr) {
throw std::runtime_error("could not to find sound: " + file);
}
auto sound = baseSound.release(); auto sound = baseSound.release();
return [=](auto assets) { return [=](auto assets) {
assets->store(std::unique_ptr<audio::Sound>(sound), name); assets->store(std::unique_ptr<audio::Sound>(sound), name);