feat(demo): la graella del fons apareix ja muntada en entrar a la demo

This commit is contained in:
2026-05-29 09:12:30 +02:00
parent 1e63d3ae9d
commit 4e67a67ace
3 changed files with 13 additions and 0 deletions
+6
View File
@@ -62,6 +62,12 @@ namespace Graphics {
buildLines(); buildLines();
} }
void Playfield::completeBuild() {
// Avançar el rellotge intern més enllà de tota la finestra d'spawn + el
// creixement de l'última línia: computeLineProgress() retorna 1.0 per a totes.
elapsed_s_ = Defaults::Playfield::TOTAL_ANIMATION_DURATION_S;
}
void Playfield::update(float delta_time) { void Playfield::update(float delta_time) {
elapsed_s_ += delta_time; elapsed_s_ += delta_time;
for (auto& ripple : ripples_) { for (auto& ripple : ripples_) {
+5
View File
@@ -30,6 +30,11 @@ namespace Graphics {
// Avança timers interns (creació + ripples). // Avança timers interns (creació + ripples).
void update(float delta_time); void update(float delta_time);
// Completa instantàniament l'animació de creació de la graella (totes les
// línies al 100%). Útil per a la demo (attract), que arrenca amb la
// partida "ja començada" i no ha de mostrar el muntatge del fons.
void completeBuild();
// Pinta la graella. La porció dibuixada de cada línia depèn del timer intern, // Pinta la graella. La porció dibuixada de cada línia depèn del timer intern,
// i s'aplica deformació radial per cada ripple activa que afecti la línia. // i s'aplica deformació radial per cada ripple activa que afecti la línia.
void draw() const; void draw() const;
+2
View File
@@ -168,6 +168,8 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
// previ per restaurar-lo al destructor sense xafar la preferència de l'usuari. // previ per restaurar-lo al destructor sense xafar la preferència de l'usuari.
sound_was_enabled_ = Audio::get()->isSoundEnabled(); sound_was_enabled_ = Audio::get()->isSoundEnabled();
Audio::get()->enableSound(false); Audio::get()->enableSound(false);
// El fons (graella) ha d'aparèixer ja muntat: la demo és una partida en marxa.
playfield_.completeBuild();
} else { } else {
stage_manager_->init(); stage_manager_->init();
} }