diff --git a/source/core/audio/audio.cpp b/source/core/audio/audio.cpp index 6adf336..8bb79d0 100644 --- a/source/core/audio/audio.cpp +++ b/source/core/audio/audio.cpp @@ -1,183 +1,291 @@ -#include "audio.hpp" +#include "core/audio/audio.hpp" -#include // Para SDL_LogInfo, SDL_LogCategory, SDL_G... +#include // Para SDL_GetError, SDL_Init #include // Para clamp -#include // Para std::cout +#include // Para std::fprintf -// Implementación de stb_vorbis (debe estar ANTES de incluir jail_audio.hpp) -// clang-format off -#undef STB_VORBIS_HEADER_ONLY -#include "external/stb_vorbis.h" -// clang-format on +#include "core/audio/audio_adapter.hpp" // Para AudioResource::getMusic/getSound +#include "core/audio/jail_audio.hpp" // Para Ja::* (motor jailgames) +#include "core/audio/sound_effects_config.hpp" // Para SoundEffectsConfig +#include "core/defaults.hpp" // Para Defaults::Audio::FREQUENCY -#include "core/audio/audio_cache.hpp" // Para AudioCache -#include "core/audio/jail_audio.hpp" // Para JA_FadeOutMusic, JA_Init, JA_PauseM... -#include "game/options.hpp" // Para AudioOptions, audio, MusicOptions +// Invariant compile-time: tots los valors d'Audio::Group han de cabre als slots +// de volum per grup que manté l'engine. Si s'afegeix una nueva entrada a Group +// y no s'incrementa Ja::MAX_GROUPS, este assert falla antes de compilar. +static_assert(static_cast(Audio::Group::INTERFACE) < Ja::MAX_GROUPS, + "Audio::Group té més entrades que slots té Ja::MAX_GROUPS"); // Singleton -Audio* Audio::instance = nullptr; +std::unique_ptr