refactor(core/audio): quitar const que mentia en 6 mètodes (INCONS-01)
playSound (x2), stopAllSounds, fadeOutMusic, setSoundVolume i setMusicVolume es declaraven const però mutaven l'estat global de Ja::* (channels[], outgoing_music, music_volume, sound_volume[]). El const no protegia res: el compilador no detectava les mutacions perquè anaven a globals, no a membres, i podia induir a error a qui llegia el header. Els callers externs van via Audio* (no Audio const*), així que el canvi és source-compatible. Clang-tidy falla amb readability-make-member-function-const perquè tampoc veu la mutació — és exactament el símptoma que motiva el hallazgo. S'afegeix NOLINT localitzat a cada mètode amb la raó. Quan s'executi COUP-01 (encapsular Ja::* en classe membre) els NOLINT cauran sols perquè la mutació serà visible al compilador. effectiveVolume es queda const — és un càlcul pur sobre els membres. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
6a1ed37242
commit
964ff104ce
3 files changed
+19
-13
No files matched your search
@@ -70,7 +70,7 @@ Los IDs se mantienen estables una vez asignados. Cada entrada apunta al(los) fic
|
|||||||
|
|
||||||
| ID | Fichero:línea | Hallazgo | Severidad | Estado | Notas |
|
| ID | Fichero:línea | Hallazgo | Severidad | Estado | Notas |
|
||||||
|----|---------------|----------|-----------|--------|-------|
|
|----|---------------|----------|-----------|--------|-------|
|
||||||
| INCONS-01 | `audio.cpp:128,135,142,149,172,180` | Métodos `const` que mutan globals de `Ja` (const miente) | Importante | PENDING | Quitar `const`; propagar a la declaración |
|
| INCONS-01 | `audio.cpp:128,135,142,149,172,180` | Métodos `const` que mutan globals de `Ja` (const miente) | Importante | DONE | `const` tret de 6 mètodes (`playSound` x2, `stopAllSounds`, `fadeOutMusic`, `setSoundVolume`, `setMusicVolume`). `effectiveVolume` es queda `const` (pur sobre membres). Cap caller extern via `const Audio*` |
|
||||||
| INCONS-02 | `audio.hpp:44-48` + `jail_audio.hpp:44-50` | Dos `MusicState` paralelos + `getRealMusicState` como puente | Importante | PENDING | Un enum único; eliminar `getRealMusicState` |
|
| INCONS-02 | `audio.hpp:44-48` + `jail_audio.hpp:44-50` | Dos `MusicState` paralelos + `getRealMusicState` como puente | Importante | PENDING | Un enum único; eliminar `getRealMusicState` |
|
||||||
| INCONS-03 | `audio.cpp` varios | Comentarios mezclan catalán y español | Menor | PENDING | Unificar a catalán |
|
| INCONS-03 | `audio.cpp` varios | Comentarios mezclan catalán y español | Menor | PENDING | Unificar a catalán |
|
||||||
| INCONS-04 | `audio.hpp:70,78` | `playMusic` `loop=-1` vs `playSound` `loop=0` | Menor | WONTFIX | Convención razonable (música loop / sonido one-shot); documentar |
|
| INCONS-04 | `audio.hpp:70,78` | `playMusic` `loop=-1` vs `playSound` `loop=0` | Menor | WONTFIX | Convención razonable (música loop / sonido one-shot); documentar |
|
||||||
|
|||||||
@@ -129,28 +129,32 @@ void Audio::stopMusic() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reproduce un sonido por nombre
|
// Reproduce un sonido por nombre
|
||||||
void Audio::playSound(const std::string& name, Group group) const {
|
// NOLINTNEXTLINE(readability-make-member-function-const) — muta globals de Ja::channels
|
||||||
|
void Audio::playSound(const std::string& name, Group group) {
|
||||||
if (sound_enabled_) {
|
if (sound_enabled_) {
|
||||||
Ja::playSound(AudioResource::getSound(name), 0, static_cast<int>(group));
|
Ja::playSound(AudioResource::getSound(name), 0, static_cast<int>(group));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reproduce un sonido por puntero directo
|
// Reproduce un sonido por puntero directo
|
||||||
void Audio::playSound(Ja::Sound* sound, Group group) const {
|
// NOLINTNEXTLINE(readability-make-member-function-const) — muta globals de Ja::channels
|
||||||
|
void Audio::playSound(Ja::Sound* sound, Group group) {
|
||||||
if (sound_enabled_ && sound != nullptr) {
|
if (sound_enabled_ && sound != nullptr) {
|
||||||
Ja::playSound(sound, 0, static_cast<int>(group));
|
Ja::playSound(sound, 0, static_cast<int>(group));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Detiene todos los sonidos
|
// Detiene todos los sonidos
|
||||||
void Audio::stopAllSounds() const {
|
// NOLINTNEXTLINE(readability-make-member-function-const) — muta globals de Ja::channels
|
||||||
|
void Audio::stopAllSounds() {
|
||||||
if (sound_enabled_) {
|
if (sound_enabled_) {
|
||||||
Ja::stopChannel(-1);
|
Ja::stopChannel(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Realiza un fundido de salida de la música
|
// Realiza un fundido de salida de la música
|
||||||
void Audio::fadeOutMusic(int milliseconds) const {
|
// NOLINTNEXTLINE(readability-make-member-function-const) — muta Ja::outgoing_music/incoming_fade
|
||||||
|
void Audio::fadeOutMusic(int milliseconds) {
|
||||||
if (music_enabled_ && getRealMusicState() == MusicState::PLAYING) {
|
if (music_enabled_ && getRealMusicState() == MusicState::PLAYING) {
|
||||||
Ja::fadeOutMusic(milliseconds);
|
Ja::fadeOutMusic(milliseconds);
|
||||||
}
|
}
|
||||||
@@ -181,12 +185,14 @@ auto Audio::effectiveVolume(float volume, bool channel_enabled) const -> float {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Estableix el volum dels sons (float 0.0..1.0)
|
// Estableix el volum dels sons (float 0.0..1.0)
|
||||||
void Audio::setSoundVolume(float sound_volume, Group group) const {
|
// NOLINTNEXTLINE(readability-make-member-function-const) — muta Ja::sound_volume[] i canals actius
|
||||||
|
void Audio::setSoundVolume(float sound_volume, Group group) {
|
||||||
Ja::setSoundVolume(effectiveVolume(sound_volume, sound_enabled_), static_cast<int>(group));
|
Ja::setSoundVolume(effectiveVolume(sound_volume, sound_enabled_), static_cast<int>(group));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Estableix el volum de la música (float 0.0..1.0)
|
// Estableix el volum de la música (float 0.0..1.0)
|
||||||
void Audio::setMusicVolume(float music_volume) const {
|
// NOLINTNEXTLINE(readability-make-member-function-const) — muta Ja::music_volume i stream actual
|
||||||
|
void Audio::setMusicVolume(float music_volume) {
|
||||||
Ja::setMusicVolume(effectiveVolume(music_volume, music_enabled_));
|
Ja::setMusicVolume(effectiveVolume(music_volume, music_enabled_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,16 +69,16 @@ class Audio {
|
|||||||
void pauseMusic(); // Pausar reproducción de música
|
void pauseMusic(); // Pausar reproducción de música
|
||||||
void resumeMusic(); // Continua la música pausada
|
void resumeMusic(); // Continua la música pausada
|
||||||
void stopMusic(); // Detener completamente la música
|
void stopMusic(); // Detener completamente la música
|
||||||
void fadeOutMusic(int milliseconds) const; // Fundido de salida de la música
|
void fadeOutMusic(int milliseconds); // Fundido de salida de la música (muta globals de Ja)
|
||||||
|
|
||||||
// --- Control de sonidos ---
|
// --- Control de sonidos ---
|
||||||
void playSound(const std::string& name, Group group = Group::GAME) const; // Reproducir sonido puntual por nombre
|
void playSound(const std::string& name, Group group = Group::GAME); // Reproducir sonido puntual por nombre (muta globals de Ja)
|
||||||
void playSound(Ja::Sound* sound, Group group = Group::GAME) const; // Reproducir sonido puntual por puntero
|
void playSound(Ja::Sound* sound, Group group = Group::GAME); // Reproducir sonido puntual por puntero (muta globals de Ja)
|
||||||
void stopAllSounds() const; // Detener todos los sonidos
|
void stopAllSounds(); // Detener todos los sonidos (muta globals de Ja)
|
||||||
|
|
||||||
// --- Control de volumen (API interna: float 0.0..1.0) ---
|
// --- Control de volumen (API interna: float 0.0..1.0) ---
|
||||||
void setSoundVolume(float volume, Group group = Group::ALL) const; // Ajustar volumen de efectos
|
void setSoundVolume(float volume, Group group = Group::ALL); // Ajustar volumen de efectos
|
||||||
void setMusicVolume(float volume) const; // Ajustar volumen de música
|
void setMusicVolume(float volume); // Ajustar volumen de música
|
||||||
|
|
||||||
// --- Helpers de conversió per a la capa de presentació ---
|
// --- Helpers de conversió per a la capa de presentació ---
|
||||||
// UI (menús, notificacions) manega enters 0..100; internament viu float 0..1.
|
// UI (menús, notificacions) manega enters 0..100; internament viu float 0..1.
|
||||||
|
|||||||
Reference in new issue
Block a user