feat(scenes): data/scenes/game.yaml amb timings i corbes de transició

This commit is contained in:
JailDesigner committed 2026-04-26 08:54:45 +02:00
1 parent 651db50a93
commit 368f9d2d6a
4 files changed
+117

No files matched your search

+25
View File
@@ -50,6 +50,27 @@ class GameScene : public Scene {
ROOM_OUTRO, // Sortida de sala: text de sortida + fade out.
};
// Configuració de la FSM de sala llegida de `data/scenes/game.yaml`.
// Si el YAML manca, els camps queden amb els fallbacks compilats. Es
// carrega un sol cop al ctor; canvis al fitxer requereixen reiniciar.
// Pública pel mateix motiu que State: el reader viu en un anonymous
// namespace fora de la classe per simetria amb els altres readers.
struct SceneTransitionConfig {
int intro_fade_in_ms{500};
int intro_text_delay_ms{500};
int intro_text_enter_ms{500};
int intro_text_hold_ms{1000};
int intro_text_exit_ms{500};
int outro_text_enter_ms{500};
int outro_text_hold_ms{1000};
int outro_text_exit_ms{500};
int outro_fade_out_ms{500};
UiConfig::CurveFn text_enter_curve{nullptr};
UiConfig::CurveFn text_exit_curve{nullptr};
};
explicit GameScene(Config config = defaultConfig());
~GameScene() override;
@@ -155,6 +176,10 @@ class GameScene : public Scene {
UiConfig::CurveFn curve{nullptr}; // Corba activa.
} pause_;
// Configuració de la FSM de sala (intro/outro). Carregada al ctor des
// de `data/scenes/game.yaml`; valors per defecte si manca el YAML.
SceneTransitionConfig transition_config_{};
// Estat actual de la FSM de sala. S'inicialitza a ROOM_INTRO al ctor
// perquè cada vegada que entres al joc passes per la presentació de
// la sala. La transició a PLAYING l'orquestra `updateRoomTransition`.