fix(core/audio): toggle* i enable[Sound|Music] reapliquen volum (PATCH-01)

Abans, toggleEnabled/toggleSound/toggleMusic i les variants sense bool
només flipaven el flag intern; els canals actius no notaven el canvi
fins a la pròxima crida explícita a setSoundVolume/setMusicVolume —
silenciós i fàcil de perdre.

Ara:
  - toggleEnabled passa per enable(bool), que ja reaplicava els volums.
  - enableSound(bool) i enableMusic(bool) es mouen a audio.cpp i
    reapliquen el volum gated cap a Ja::*.
  - Les variants enableSound()/disableSound()/enableMusic()/disableMusic()
    i els toggles passen per aquestes dues funcions, així que qualsevol
    camí d'activació produeix el mateix efecte sobre l'estat sonor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
JailDesignerandClaude Opus 4.7 committed 2026-04-20 11:57:10 +02:00
1 parent 92f38bc51c
commit a6cd12a944
3 files changed
+27 -13

No files matched your search

+2 -2
View File
@@ -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 |
+14
View File
@@ -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)) {
+11 -11
View File
@@ -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_; }