// audio_cache.hpp - Caché simplificado de sonidos y música // © 2025 Port a C++20 con SDL3 #pragma once #include #include #include "core/audio/jail_audio.hpp" // Caché estático de sonidos y música // Patrón inspirado en Graphics::ShapeLoader class AudioCache { public: // No instanciable (todo estático) AudioCache() = delete; // Obtener sonido (carga bajo demanda) // Retorna puntero (nullptr si error) static JA_Sound_t* getSound(const std::string& name); // Obtener música (carga bajo demanda) // Retorna puntero (nullptr si error) static JA_Music_t* getMusic(const std::string& name); // Limpiar caché (útil para debug/recarga) static void clear(); // Estadísticas (debug) static size_t getSoundCacheSize(); static size_t getMusicCacheSize(); private: static std::unordered_map sounds_; static std::unordered_map musics_; static std::string sounds_base_path_; // "data/sounds/" static std::string music_base_path_; // "data/music/" // Helpers privados static std::string resolveSoundPath(const std::string& name); static std::string resolveMusicPath(const std::string& name); };