#pragma once struct JA_Music_t; struct JA_Sound_t; class Audio { private: // [SINGLETON] Objeto audio privado static Audio *audio_; // Constructor Audio(); // Constructor privado para el patrón Singleton // Destructor ~Audio(); // Destructor privado para el patrón Singleton // Variables bool enabled_ = true; // Indica si el audio está habilitado bool sound_enabled_ = true; // Indica si los sonidos están habilitados bool music_enabled_ = true; // Indica si la música está habilitada public: // [SINGLETON] Crearemos el objeto con esta función estática static void init(); // Inicializa el objeto Singleton // [SINGLETON] Destruiremos el objeto con esta función estática static void destroy(); // Destruye el objeto Singleton // [SINGLETON] Con este método obtenemos el objeto y podemos trabajar con él static Audio *get(); // Devuelve la instancia del Singleton void playMusic(JA_Music_t *music, const int loop = -1); // Reproduce la música void pauseMusic(); // Pausa la música void stopMusic(); // Detiene la música void playSound(JA_Sound_t *sound); // Reproduce un sonido void stopAllSounds(); // Detiene todos los sonidos void fadeOutMusic(int milliseconds); // Realiza un fundido de salida de la música // Audio void enable() { enabled_ = true; } // Habilita el audio void disable() { enabled_ = false; } // Deshabilita el audio void enable(bool value) { enabled_ = value; } // Habilita o deshabilita el audio void toggleEnabled() { enabled_ = !enabled_; } // Alterna el estado del audio // Sound void enableSound() { sound_enabled_ = true; } // Habilita los sonidos void disableSound() { sound_enabled_ = false; } // Deshabilita los sonidos void enableSound(bool value) { sound_enabled_ = value; } // Habilita o deshabilita los sonidos void toggleSound() { sound_enabled_ = !sound_enabled_; } // Alterna el estado de los sonidos // Music 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; } // Habilita o deshabilita la música void toggleMusic() { music_enabled_ = !music_enabled_; } // Alterna el estado de la música // Volume void setSoundVolume(int volume); // Establece el volumen de los sonidos void setMusicVolume(int volume); // Establece el volumen de la música };