refactor(log): migra game/scenes i game/ui a Log::

- logo_scene, title_scene, intro_scene, room_fsm: missatges de
  cicle d'escena com a Log::info amb tag "scene" o "RoomFsm".
  Eliminats els TODO obsolets sobre el logger pendent.
- game_scene (16 logs): events del bus (LEVEL COMPLETE, PLAYER HIT,
  PLAYER KILLED) com a info; transicions de ROOM com a info; warns
  als casos d'àudio absent o música no arrencada.
- hud (3 logs): init i events com a info.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
JailDesignerandClaude Opus 4.7 committed 2026-05-08 09:24:11 +02:00
1 parent 0b708f1515
commit 5fce52e0ad
6 files changed
+34 -46

No files matched your search

+19 -23
View File
@@ -7,7 +7,6 @@
#include <cstddef>
#include <cstdint>
#include <filesystem>
#include <iostream>
#include <iterator>
#include <utility>
#include <variant>
@@ -41,6 +40,7 @@
#include "utils/defaults.hpp"
#include "utils/defines.hpp"
#include "utils/easing.hpp"
#include "utils/log.hpp"
namespace {
@@ -290,13 +290,12 @@ GameScene::GameScene(Config config)
// re-emissions es filtren per estat per no re-entrar mai des d'una
// transició ja en marxa.
entity_manager_.getBus().subscribe("level_complete", [this](const Event& ev) {
std::cout << "[LEVEL COMPLETE] player_id=" << ev.player_id << '\n';
Log::info("LEVEL COMPLETE", "player_id={}", ev.player_id);
if (state_ == RoomFsm::State::PLAYING) { setState(RoomFsm::State::ROOM_OUTRO); }
});
entity_manager_.getBus().subscribe("player_hit", [](const Event& ev) {
const auto* dmg = std::get_if<int>(&ev.payload);
std::cout << "[PLAYER HIT] player_id=" << ev.player_id
<< " dmg=" << (dmg != nullptr ? *dmg : 0) << '\n';
Log::info("PLAYER HIT", "player_id={} dmg={}", ev.player_id, dmg != nullptr ? *dmg : 0);
});
// `player_killed` el publica un hazard letal (mòmia amb
// `kills_outright`) després del `player_hit`. Aquí resolem el
@@ -556,8 +555,7 @@ void GameScene::loadRoom(const std::string& yaml_path) {
hud_->setPyramidRoom(mgr.currentPyramid(), mgr.currentRoom());
}
std::cout << "[ROOM] load " << yaml_path << ": entities reloaded, paint cleared, "
<< ACTIVE_COUNT << " active player(s) disabled (awaiting spawn cinematic)\n";
Log::info("ROOM", "load {}: entities reloaded, paint cleared, {} active player(s) disabled (awaiting spawn cinematic)", yaml_path, ACTIVE_COUNT);
}
void GameScene::advanceToNextRoom() {
@@ -565,7 +563,7 @@ void GameScene::advanceToNextRoom() {
if (!mgr.advance()) {
// Política temporal mentre no hi haja pantalla de "Fi de joc":
// arribar al final del levels.yaml fa loop a la primera sala.
std::cout << "[ROOM] final del levels.yaml — bucle a la primera sala\n";
Log::info("ROOM", "final del levels.yaml — bucle a la primera sala");
mgr.restart();
}
loadRoom(mgr.currentPath());
@@ -576,9 +574,9 @@ void GameScene::enterRoomIntro() {
// Anotem la transició al log si veníem d'un altre estat; si ja
// estàvem a INTRO (cas típic d'un salt debug) també queda ben clar.
if (state_ != RoomFsm::State::ROOM_INTRO) {
std::cout << "[ROOM] " << RoomFsm::stateName(state_) << " -> ROOM_INTRO\n";
Log::info("ROOM", "{} -> ROOM_INTRO", RoomFsm::stateName(state_));
} else {
std::cout << "[ROOM] ROOM_INTRO restart (cinemàtica reiniciada)\n";
Log::info("ROOM", "ROOM_INTRO restart (cinemàtica reiniciada)");
}
state_ = RoomFsm::State::ROOM_INTRO;
transition_ = {};
@@ -602,7 +600,7 @@ void GameScene::enterRoomIntro() {
auto* audio = Audio::get();
if (audio == nullptr) {
std::cout << "[ROOM] INTRO: Audio absent — sense música, timeline només contra text\n";
Log::warn("ROOM", "INTRO: Audio absent — sense música, timeline només contra text");
return;
}
audio->stopMusic();
@@ -611,10 +609,9 @@ void GameScene::enterRoomIntro() {
if (Audio::getMusicState() == Audio::MusicState::PLAYING) {
const int DUR_MS = Audio::getMusicDurationMs("room_intro.ogg");
transition_config_.intro_music_tail_ms = std::max(0, DUR_MS - TEXT_TOTAL_MS);
std::cout << "[ROOM] INTRO: música " << DUR_MS << " ms, music_tail "
<< transition_config_.intro_music_tail_ms << " ms\n";
Log::info("ROOM", "INTRO: música {} ms, music_tail {} ms", DUR_MS, transition_config_.intro_music_tail_ms);
} else {
std::cout << "[ROOM] INTRO: música no arrencada — timeline només contra text\n";
Log::warn("ROOM", "INTRO: música no arrencada — timeline només contra text");
}
}
@@ -638,7 +635,7 @@ void GameScene::respawnPlayersInstant() {
state_ = RoomFsm::State::PLAYING;
intro_completed_ = true;
transition_ = {};
std::cout << "[ROOM] post-editor: spawn instantani, estat -> PLAYING\n";
Log::info("ROOM", "post-editor: spawn instantani, estat -> PLAYING");
}
#endif
@@ -671,11 +668,11 @@ void GameScene::triggerPlayerSpawn(std::size_t slot_index) {
// al YAML, l'arma queda buida i el LAND és sec igualment.
players_[slot_index]->armNextLandReverb(transition_config_.intro_land_reverb_preset);
std::cout << "[ROOM] spawn cinematic P" << (slot_index + 1) << ": airborne entry\n";
Log::info("ROOM", "spawn cinematic P{}: airborne entry", slot_index + 1);
}
void GameScene::dispatchPlayerKilled(int player_id) {
std::cout << "[PLAYER KILLED] player_id=" << player_id << '\n';
Log::info("PLAYER KILLED", "player_id={}", player_id);
const auto IT = std::ranges::find_if(players_, [player_id](const auto& p) {
return p && p->getId() == player_id;
});
@@ -713,7 +710,7 @@ void GameScene::spawnDuePlayers() {
void GameScene::setState(RoomFsm::State new_state) {
if (new_state == state_) { return; }
std::cout << "[ROOM] " << RoomFsm::stateName(state_) << " -> " << RoomFsm::stateName(new_state) << '\n';
Log::info("ROOM", "{} -> {}", RoomFsm::stateName(state_), RoomFsm::stateName(new_state));
state_ = new_state;
transition_ = {};
// Reset defensiu dels flags de cicle quan tornem a INTRO via aquest
@@ -742,7 +739,7 @@ void GameScene::setState(RoomFsm::State new_state) {
const int TEXT_TOTAL_MS = transition_config_.outro_text_enter_ms + transition_config_.outro_text_hold_ms + transition_config_.outro_text_exit_ms;
transition_config_.outro_music_tail_ms = 0;
if (audio == nullptr) {
std::cout << "[ROOM] OUTRO: Audio absent — sense música, timeline només contra text\n";
Log::warn("ROOM", "OUTRO: Audio absent — sense música, timeline només contra text");
} else {
audio->stopMusic();
audio->setOnMusicEnded({});
@@ -750,10 +747,9 @@ void GameScene::setState(RoomFsm::State new_state) {
if (Audio::getMusicState() == Audio::MusicState::PLAYING) {
const int DUR_MS = Audio::getMusicDurationMs("room_outro.ogg");
transition_config_.outro_music_tail_ms = std::max(0, DUR_MS - TEXT_TOTAL_MS);
std::cout << "[ROOM] OUTRO: música " << DUR_MS << " ms, music_tail "
<< transition_config_.outro_music_tail_ms << " ms\n";
Log::info("ROOM", "OUTRO: música {} ms, music_tail {} ms", DUR_MS, transition_config_.outro_music_tail_ms);
} else {
std::cout << "[ROOM] OUTRO: música no arrencada — timeline només contra text\n";
Log::warn("ROOM", "OUTRO: música no arrencada — timeline només contra text");
}
}
}
@@ -1075,7 +1071,7 @@ void GameScene::handlePauseInput() {
pause_.curve = GOING_TO_PAUSE ? UiConfig::get().pauseEnterCurve() : UiConfig::get().pauseExitCurve();
pause_.state = GOING_TO_PAUSE ? PauseState::ENTERING : PauseState::EXITING;
std::cout << "[PAUSE] " << (GOING_TO_PAUSE ? "entering" : "exiting") << " from_scale=" << pause_.from_scale << " duration_ms=" << pause_.duration_ms << '\n';
Log::info("PAUSE", "{} from_scale={} duration_ms={}", GOING_TO_PAUSE ? "entering" : "exiting", pause_.from_scale, pause_.duration_ms);
}
}
@@ -1212,7 +1208,7 @@ void GameScene::update(int delta_ms) {
// (creuar → player_exited → level_complete → OUTRO) es manté.
// Mateixos gates que el salt entre sales.
if (pause_.state == PauseState::IDLE && !editor_.active() && detectOpenDoor()) {
std::cout << "[DEBUG] força obertura de la porta\n";
Log::info("DEBUG", "força obertura de la porta");
entity_manager_.forceOpenDoor();
}
#endif