#pragma once #include #include "audio.h" class Audio { public: // Obtención de la instancia única (*Meyers Singleton*) static Audio &get() { static Audio instance; return instance; } // Manejo de reproducción de música void playMusic(const std::string &name, int loop = -1); // Reproduce música en bucle void pauseMusic(); // Pausa la reproducción de música void stopMusic(); // Detiene la música completamente void fadeOutMusic(int milliseconds); // Fundido de salida de la música // Manejo de efectos de sonido void playSound(const std::string &name); // Reproduce un sonido puntual void stopAllSounds(); // Detiene todos los sonidos activos // Configuración de audio general void enable() { enabled_ = true; } // Habilita el audio void disable() { enabled_ = false; } // Deshabilita el audio void enable(bool value) { enabled_ = value; } // Establece estado del audio void toggleEnabled() { enabled_ = !enabled_; } // Alterna estado del audio // Configuración de sonido void enableSound() { sound_enabled_ = true; } // Habilita los sonidos void disableSound() { sound_enabled_ = false; } // Deshabilita los sonidos void enableSound(bool value) { sound_enabled_ = value; } // Establece estado de sonidos void toggleSound() { sound_enabled_ = !sound_enabled_; } // Alterna estado de sonidos // Configuración de música void enableMusic() { music_enabled_ = true; } // Habilita la música void disableMusic() { music_enabled_ = false; } // Deshabilita la música void enableMusic(bool value) { music_enabled_ = value; } // Establece estado de música void toggleMusic() { music_enabled_ = !music_enabled_; } // Alterna estado de música // Control de volumen void setSoundVolume(int volume); // Ajusta volumen de efectos de sonido void setMusicVolume(int volume); // Ajusta volumen de música private: // Variables internas bool enabled_ = true; // Estado general del audio bool sound_enabled_ = true; // Estado de los efectos de sonido bool music_enabled_ = true; // Estado de la música // Constructor privado (Meyers Singleton) Audio(); ~Audio(); // Prevención de copia y asignación Audio(const Audio &) = delete; Audio &operator=(const Audio &) = delete; };