INCONS-02+CONV-03: std::cerr → std::cout a options.cpp

Les 10 ocurrències de std::cerr a options.cpp (incloent les de PATCH-04)
passen a std::cout per complir la convenció del projecte ("std::cout
only, no SDL_Log"). Prova manual: amb config.yaml trencat, els missatges
de backup i reescriptura es veuen per stdout.
This commit is contained in:
JailDesigner committed 2026-04-20 17:54:51 +02:00
1 parent 505e819af1
commit ea725c2177
2 files changed
+12 -12

No files matched your search

+2 -2
View File
@@ -75,7 +75,7 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer
| ID | Fitxer:línia | Troballa | Severitat | Estat | Notes |
|----|--------------|----------|-----------|-------|-------|
| INCONS-01 | `game/*` | 3 estils de mòdul: namespace+inline (Options), classe all-static (Map), OOP (Player/Tilemap), namespace+constexpr (UiColor/Notification) | Importante | PENDING | Decidir i uniformar |
| INCONS-02 | `options.cpp:372,477,530,579,607` | `std::cerr` en comptes de `std::cout` (convenció del projecte) | Importante | PENDING | Substituir per `std::cout` prefixat |
| INCONS-02 | `options.cpp:372,477,530,579,607` | `std::cerr` en comptes de `std::cout` (convenció del projecte) | Importante | DONE | Totes les ocurrències (10, incloent les afegides a PATCH-04) substituïdes per `std::cout`. Test manual: amb config.yaml trencat el missatge de backup va per stdout |
| INCONS-03 | `options.cpp` vs `tilemap.cpp:77-78` | Diferent política en YAML absent: `contains()` vs accés directe que llança | Menor | PENDING | Uniformar (llançar sempre si és un fitxer obligatori) |
| INCONS-04 | `options.cpp`, `player.cpp` | Locals ALL-CAPS (`CONTENT`, `IT`, `DT`, `OLD_X`) barrejats amb `snake_case` | Menor | PENDING | Uniformar estil |
| INCONS-05 | `options.cpp:420-430` | `Screen::Config` s'omple camp a camp mentre que `Audio::Config` fa `designated initializers` | Menor | PENDING | Uniformar |
@@ -96,5 +96,5 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer
|----|--------------|----------|-----------|-------|-------|
| CONV-01 | `player.*`, `map.*`, `ui/*`, `game_scene.cpp` | Speed, caixa de col·lisió, geometria, índexs paleta, rutes d'assets, nom del track: tot cablejat | Crítico | PENDING | Tapat parcialment per HC-01/02/03/05/06 |
| CONV-02 | `map.*`, `options.*` | Interfaces+callbacks: `Map` simulated class, `Options` globals sense observers | Importante | PENDING | Cobert per PATCH-07 + COUP-03 |
| CONV-03 | `options.cpp` | `std::cerr` viola la regla "std::cout only" | Importante | PENDING | Duplicat d'INCONS-02 |
| CONV-03 | `options.cpp` | `std::cerr` viola la regla "std::cout only" | Importante | DONE | Resolt amb INCONS-02 |
| CONV-04 | `player.cpp:27` | `SDL_GetKeyboardState` directe en `Player::update` (fuga de SDL al gameplay) | Menor | PENDING | Anar per `GlobalInputs`/`EventBuffer` |
+10 -10
View File
@@ -87,7 +87,7 @@ namespace {
std::ofstream dst(path + ".bak", std::ios::binary);
if (!dst) { return; }
dst << src.rdbuf();
std::cerr << "Options: còpia de seguretat a " << path << ".bak\n";
std::cout << "Options: còpia de seguretat a " << path << ".bak\n";
}
void parseWindow(const fkyaml::node& yaml) {
@@ -372,7 +372,7 @@ namespace {
try {
auto yaml = fkyaml::node::deserialize(CONTENT);
if (!yaml.contains("presets") || !yaml["presets"].is_sequence()) {
std::cerr << "Options: " << kind_label << " manca `presets:`; reescrivint amb defaults.\n";
std::cout << "Options: " << kind_label << " manca `presets:`; reescrivint amb defaults.\n";
backupFile(path);
presets = defaults_fn();
return save_fn();
@@ -384,15 +384,15 @@ namespace {
presets.push_back(preset);
}
if (presets.empty()) {
std::cerr << "Options: " << kind_label << " sense presets; reescrivint amb defaults.\n";
std::cout << "Options: " << kind_label << " sense presets; reescrivint amb defaults.\n";
backupFile(path);
presets = defaults_fn();
return save_fn();
}
return true;
} catch (const std::exception& e) {
std::cerr << "Options: error parsejant " << kind_label << ": " << e.what() << '\n';
std::cerr << "Options: reescrivint el fitxer amb presets per defecte.\n";
std::cout << "Options: error parsejant " << kind_label << ": " << e.what() << '\n';
std::cout << "Options: reescrivint el fitxer amb presets per defecte.\n";
backupFile(path);
presets = defaults_fn();
return save_fn();
@@ -449,7 +449,7 @@ namespace Options {
// amb els defaults de la versió nova. El fitxer original queda
// a `<path>.bak` per si l'usuari volia preservar tuning manual.
if (file_version != Texts::VERSION) {
std::cerr << "Options: config.yaml versió \"" << file_version
std::cout << "Options: config.yaml versió \"" << file_version
<< "\" != \"" << Texts::VERSION << "\"; reescrivint amb defaults.\n";
backupFile(config_file_path);
return saveToFile();
@@ -462,8 +462,8 @@ namespace Options {
parseAudio(yaml);
return true;
} catch (const std::exception& e) {
std::cerr << "Options: error parsejant config.yaml: " << e.what() << '\n';
std::cerr << "Options: reescrivint el fitxer amb defaults.\n";
std::cout << "Options: error parsejant config.yaml: " << e.what() << '\n';
std::cout << "Options: reescrivint el fitxer amb defaults.\n";
backupFile(config_file_path);
return saveToFile();
}
@@ -610,7 +610,7 @@ namespace Options {
const auto IT = std::ranges::find_if(crtpi_presets,
[](const CrtPiPreset& preset) { return preset.name == video.shader.current_crtpi_preset; });
if (IT == crtpi_presets.end()) {
std::cerr << "Options: preset CrtPi \"" << video.shader.current_crtpi_preset << "\" no trobat; aplicant defaults.\n";
std::cout << "Options: preset CrtPi \"" << video.shader.current_crtpi_preset << "\" no trobat; aplicant defaults.\n";
return {};
}
return {
@@ -638,7 +638,7 @@ namespace Options {
const auto IT = std::ranges::find_if(postfx_presets,
[](const PostFXPreset& preset) { return preset.name == video.shader.current_postfx_preset; });
if (IT == postfx_presets.end()) {
std::cerr << "Options: preset PostFX \"" << video.shader.current_postfx_preset << "\" no trobat; aplicant passthrough.\n";
std::cout << "Options: preset PostFX \"" << video.shader.current_postfx_preset << "\" no trobat; aplicant passthrough.\n";
return {};
}
return {