feat(title): fade-in inicial de negre a escena (500 ms, configurable a ui.yaml)
This commit is contained in:
1 parent
29cb4c2211
commit
1431f27cfa
6 files changed
+36
No files matched your search
@@ -101,6 +101,10 @@ TitleScene::TitleScene(std::shared_ptr<Text> display_font, std::shared_ptr<Text>
|
||||
.max_block_size = UiConfig::get().titleFadeOutMaxBlock(),
|
||||
});
|
||||
attract_fade_.emplace();
|
||||
// Fade-in inicial: arrenquem en negre opac i ens esvaïm cap a la
|
||||
// imatge de fons. Sense lligar a cap fase — viu sempre al frame i
|
||||
// un cop finished, `render()` és no-op fins que la TitleScene mor.
|
||||
intro_fade_.begin(UiConfig::get().titleIntroFadeInMs(), Transitions::FadeToBlack::Direction::FADE_IN);
|
||||
|
||||
// Música de fons en bucle. Es preloda al Director, així que la
|
||||
// primera crida és immediata. El fade-out arrenca en entrar a
|
||||
@@ -122,6 +126,11 @@ void TitleScene::update(int delta_ms) {
|
||||
|
||||
if (heat_haze_) { heat_haze_->tick(delta_ms); }
|
||||
|
||||
// Fade-in inicial: tica sempre. Un cop finished, FadeToBlack::tick
|
||||
// és idempotent (clamp intern al duration_ms_) i `render()` pinta
|
||||
// alpha=0 (no-op) durant la resta del cicle.
|
||||
intro_fade_.tick(delta_ms);
|
||||
|
||||
// Comptador del parpadeig: avança sempre amb `delta_ms` cru. La
|
||||
// lectura (cicle/visible) la decideix `render()` segons la fase:
|
||||
// IDLE usa visible_ms / hidden_ms del yaml (asimètric, 80/20 per
|
||||
@@ -336,6 +345,13 @@ void TitleScene::render() {
|
||||
|
||||
Notifier::get().render();
|
||||
|
||||
// Fade-in inicial: capa negra que s'esvaeix cap a l'escena durant
|
||||
// els primers `title.intro_fade_in_ms` ms. `render()` és no-op un
|
||||
// cop finished, així que es queda penjat aquí sense lògica
|
||||
// condicional. Va per damunt del Notifier — coherent amb la resta
|
||||
// de transicions — però per davall del RenderInfo de debug.
|
||||
intro_fade_.render();
|
||||
|
||||
// Capa de transició final segons la fase. Sempre cobreix l'escena
|
||||
// i el Notifier, mai el RenderInfo (overlay de debug, sempre
|
||||
// visible). STARTING usa mosaic dissolve; ATTRACT_OUT, fade-to-black
|
||||
|
||||
@@ -61,4 +61,9 @@ class TitleScene : public Scene {
|
||||
DebugConfig::StartingPlayers pending_players_{DebugConfig::StartingPlayers::BOTH};
|
||||
std::optional<Transitions::Mosaic> fade_out_;
|
||||
std::optional<Transitions::FadeToBlack> attract_fade_;
|
||||
// Fade-in inicial: capa negra que s'esvaeix cap a la imatge de fons
|
||||
// durant els primers `title.intro_fade_in_ms` ms. Sempre activa al
|
||||
// ctor; un cop finished, `render()` pinta alpha=0 (no-op) la resta
|
||||
// del cicle de l'escena.
|
||||
Transitions::FadeToBlack intro_fade_;
|
||||
};
|
||||
Reference in new issue
Block a user