feat(level-manager): HUD i text d'INTRO segueixen el LevelManager
HUD: la GameScene crida hud_->setPyramidRoom amb els valors del
LevelManager al ctor i a cada loadRoom — el marcador deixa de
mostrar 1/1 fix i s'actualitza en avançar de sala, en saltar amb
[/] i en arrencar amb starting_level del debug.yaml.
INTRO a dues línies: substitueix la clau game.room_intro per
game.room_intro_pyramid ("Piramide {p}") i game.room_intro_room
("Sala {r}") als locale ca/en. RoomFsm::formatRoomTitle(int)
desapareix i el reemplacen formatIntroPyramidLine(int) +
formatIntroRoomLine(int). renderRoomText es refactoritza per
dibuixar les dues línies (piràmide damunt, sala davall) amb
writeDX independents — comparteixen animació ara mateix però el
disseny ja les deixa preparades per ser desacoblades en el futur.
Drive-by: elimina el membre room_index_ de GameScene; les tres
ubicacions que el sincronitzaven amb el LevelManager (ctor,
advanceToNextRoom, salt debug) ja no fan falta — renderRoomText
i el HUD pregunten directament al singleton, evitant qualsevol
mirror local desincronitzable.
Test: T9/T10 actualitzats per a les dues noves formatadores.
This commit is contained in:
1 parent
b18bd4d021
commit
e2f6d326aa
7 files changed
+149
-99
No files matched your search
@@ -66,10 +66,15 @@ namespace RoomFsm {
|
||||
// (això ho fa `GameScene::setState`). Funció pura sobre l'argument.
|
||||
[[nodiscard]] auto advance(State current, Transition& t, const Config& cfg, int delta_ms) -> State;
|
||||
|
||||
// Substitueix `{n}` de la clau "game.room_intro" del Locale per
|
||||
// l'enter passat. Si la clau no està traduïda, retorna la pròpia
|
||||
// clau (fallback de Locale::text).
|
||||
[[nodiscard]] auto formatRoomTitle(int n) -> std::string;
|
||||
// Substitueix `{p}` de la clau "game.room_intro_pyramid" del Locale
|
||||
// per l'enter passat. Pensat per a la primera línia del text d'INTRO.
|
||||
// Si la clau no està traduïda, retorna la pròpia clau (fallback de
|
||||
// Locale::text).
|
||||
[[nodiscard]] auto formatIntroPyramidLine(int pyramid) -> std::string;
|
||||
|
||||
// Equivalent per a `game.room_intro_room` amb el placeholder `{r}`.
|
||||
// Es renderitza com a segona línia del text d'INTRO.
|
||||
[[nodiscard]] auto formatIntroRoomLine(int room) -> std::string;
|
||||
|
||||
// Nom textual per a logs i tests. No es fa servir per a lògica.
|
||||
[[nodiscard]] auto stateName(State s) -> const char*;
|
||||
|
||||
Reference in new issue
Block a user