feat(title): seqüència d'intro temporitzada amb slide-in del peu
This commit is contained in:
1 parent
fceeb11cdd
commit
243ced7498
7 files changed
+226
-75
No files matched your search
@@ -8,6 +8,7 @@
|
||||
#include "core/rendering/transitions/fade_to_black.hpp"
|
||||
#include "core/rendering/transitions/mosaic.hpp"
|
||||
#include "core/scene/scene.hpp"
|
||||
#include "core/ui/ui_config.hpp"
|
||||
#include "game/debug_config.hpp"
|
||||
|
||||
class Surface;
|
||||
@@ -49,6 +50,14 @@ class TitleScene : public Scene {
|
||||
void advanceToIntro(DebugConfig::StartingPlayers players);
|
||||
void advanceToLogo();
|
||||
|
||||
// Helpers de `render()` extrets per evitar que la funció gran acumuli
|
||||
// massa branques. Cadascun pinta un bloc independent del frame.
|
||||
void renderBackground();
|
||||
void renderGameLogo(const UiConfig::TitleIntro& intro);
|
||||
void renderPressStart(const UiConfig::TitleIntro& intro);
|
||||
void renderFooter(const UiConfig::TitleIntro& intro);
|
||||
void renderTransitions();
|
||||
|
||||
std::shared_ptr<Text> condensed_font_;
|
||||
std::shared_ptr<Text> copyright_font_;
|
||||
std::shared_ptr<Surface> background_;
|
||||
@@ -56,6 +65,14 @@ class TitleScene : public Scene {
|
||||
std::shared_ptr<Surface> mini_logo_;
|
||||
int timer_ms_;
|
||||
int blink_elapsed_ms_{0};
|
||||
// Rellotge de la seqüència d'intro (vegeu `title.intro` a ui.yaml).
|
||||
// Avança sempre amb `delta_ms`. La visibilitat i el slide de cada
|
||||
// element es deriven d'ell a `render()` — no cal cap altre estat.
|
||||
int intro_elapsed_ms_{0};
|
||||
// Detector de l'instant en què `intro_elapsed_ms_` creua per primera
|
||||
// vegada `press_start_at_ms`: en aquell frame es reseteja
|
||||
// `blink_elapsed_ms_` perquè el text aparegui en estat visible.
|
||||
bool press_start_armed_{false};
|
||||
std::optional<Effects::HeatHaze> heat_haze_;
|
||||
Phase phase_{Phase::IDLE};
|
||||
int starting_timer_ms_{0};
|
||||
@@ -63,7 +80,7 @@ class TitleScene : public Scene {
|
||||
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
|
||||
// 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