diff --git a/docs/audit-core-audio.md b/docs/audit-core-audio.md index 45ad09e..02c309b 100644 --- a/docs/audit-core-audio.md +++ b/docs/audit-core-audio.md @@ -22,7 +22,7 @@ Los IDs se mantienen estables una vez asignados. Cada entrada apunta al(los) fic | HC-02 | Formato/canales/freq hardcodeado en 3+ sitios | DONE | | INCONS-02 | Doble `MusicState` + `getRealMusicState` como cache paralelo | PENDING | | HC-01 | Parámetros de audio no configurables (viola convención del proyecto) | DONE | -| PATCH-01 | `toggleEnabled/toggleSound/toggleMusic` no reaplican volumen | PENDING | +| PATCH-01 | `toggleEnabled/toggleSound/toggleMusic` no reaplican volumen | DONE | --- @@ -50,7 +50,7 @@ Los IDs se mantienen estables una vez asignados. Cada entrada apunta al(los) fic | ID | Fichero:línea | Hallazgo | Severidad | Estado | Notas | |----|---------------|----------|-----------|--------|-------| -| PATCH-01 | `audio.hpp:98,105,111` | `toggleEnabled/toggleSound/toggleMusic` sólo flipan el flag; no reaplican volúmenes | Importante | PENDING | Llamar a `enable(!enabled_)` y equivalentes | +| PATCH-01 | `audio.hpp:98,105,111` | `toggleEnabled/toggleSound/toggleMusic` sólo flipan el flag; no reaplican volúmenes | Importante | DONE | `toggle*()` i variants sense bool passen per `enable[Sound|Music](bool)`. Aquestes funcions ara reapliquen el volum cap a `Ja::` perquè els canals actius responguin al toggle | | PATCH-02 | `audio.cpp:98` | `music_.name.clear()` en overload por puntero → `getCurrentMusicName()` miente | Importante | PENDING | Derivar nombre de `Ja::Music::filename` | | PATCH-03 | `audio.cpp:14-21` | `#undef L,C,R,PLAYBACK_*` workaround para macros filtradas por stb_vorbis | Importante | WONTFIX | Documentado; aislar stb_vorbis en TU propio sería más invasivo — se hará con COUP-01 | | PATCH-04 | `jail_audio.hpp:501-507` | `setMusicPosition`/`getMusicPosition` stubs no-op | Importante | PENDING | Borrar si nadie los llama | diff --git a/source/core/audio/audio.cpp b/source/core/audio/audio.cpp index e8dce69..4d3fb5f 100644 --- a/source/core/audio/audio.cpp +++ b/source/core/audio/audio.cpp @@ -207,6 +207,20 @@ void Audio::enable(bool value) { setMusicVolume(enabled_ ? config_.music_volume : MIN_VOLUME); } +// Estableix l'estat dels sons i reaplica el volum perquè els canals actius +// responguin a l'instant (evita que el toggle només surti efecte al pròxim +// setSoundVolume explícit). +void Audio::enableSound(bool value) { + sound_enabled_ = value; + setSoundVolume(config_.sound_volume); +} + +// Estableix l'estat de la música i reaplica el volum per la mateixa raó. +void Audio::enableMusic(bool value) { + music_enabled_ = value; + setMusicVolume(config_.music_volume); +} + // Inicialitza SDL Audio void Audio::initSDLAudio() { if (!SDL_Init(SDL_INIT_AUDIO)) { diff --git a/source/core/audio/audio.hpp b/source/core/audio/audio.hpp index 37c3e52..c5dc874 100644 --- a/source/core/audio/audio.hpp +++ b/source/core/audio/audio.hpp @@ -91,21 +91,21 @@ class Audio { } // --- Configuración general --- - void enable(bool value); // Establecer estado general - void toggleEnabled() { enabled_ = !enabled_; } // Alternar estado general - void applySettings(const Config& config); // Aplica una nova configuració + void enable(bool value); // Establecer estado general (reaplica volums) + void toggleEnabled() { enable(!enabled_); } // Alternar estado general (reaplica volums) + void applySettings(const Config& config); // Aplica una nova configuració // --- Configuración de sonidos --- - void enableSound() { sound_enabled_ = true; } // Habilitar sonidos - void disableSound() { sound_enabled_ = false; } // Deshabilitar sonidos - void enableSound(bool value) { sound_enabled_ = value; } // Establecer estado de sonidos - void toggleSound() { sound_enabled_ = !sound_enabled_; } // Alternar estado de sonidos + void enableSound() { enableSound(true); } // Habilitar sonidos + void disableSound() { enableSound(false); } // Deshabilitar sonidos + void enableSound(bool value); // Establecer estado de sonidos (reaplica volum) + void toggleSound() { enableSound(!sound_enabled_); } // Alternar estado de sonidos (reaplica volum) // --- Configuración de música --- - void enableMusic() { music_enabled_ = true; } // Habilitar música - void disableMusic() { music_enabled_ = false; } // Deshabilitar música - void enableMusic(bool value) { music_enabled_ = value; } // Establecer estado de música - void toggleMusic() { music_enabled_ = !music_enabled_; } // Alternar estado de música + void enableMusic() { enableMusic(true); } // Habilitar música + void disableMusic() { enableMusic(false); } // Deshabilitar música + void enableMusic(bool value); // Establecer estado de música (reaplica volum) + void toggleMusic() { enableMusic(!music_enabled_); } // Alternar estado de música (reaplica volum) // --- Consultas de estado --- [[nodiscard]] auto isEnabled() const -> bool { return enabled_; }