From 4e67a67acede8e1140bfbaf55fdb024be7a295f0 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 29 May 2026 09:12:30 +0200 Subject: [PATCH] feat(demo): la graella del fons apareix ja muntada en entrar a la demo --- source/core/graphics/playfield.cpp | 6 ++++++ source/core/graphics/playfield.hpp | 5 +++++ source/game/scenes/game_scene.cpp | 2 ++ 3 files changed, 13 insertions(+) diff --git a/source/core/graphics/playfield.cpp b/source/core/graphics/playfield.cpp index 2c87e60..78b8763 100644 --- a/source/core/graphics/playfield.cpp +++ b/source/core/graphics/playfield.cpp @@ -62,6 +62,12 @@ namespace Graphics { 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) { elapsed_s_ += delta_time; for (auto& ripple : ripples_) { diff --git a/source/core/graphics/playfield.hpp b/source/core/graphics/playfield.hpp index ba0216b..4194fda 100644 --- a/source/core/graphics/playfield.hpp +++ b/source/core/graphics/playfield.hpp @@ -30,6 +30,11 @@ namespace Graphics { // Avança timers interns (creació + ripples). 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, // i s'aplica deformació radial per cada ripple activa que afecti la línia. void draw() const; diff --git a/source/game/scenes/game_scene.cpp b/source/game/scenes/game_scene.cpp index 4cf33ea..bf20482 100644 --- a/source/game/scenes/game_scene.cpp +++ b/source/game/scenes/game_scene.cpp @@ -168,6 +168,8 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context) // previ per restaurar-lo al destructor sense xafar la preferència de l'usuari. sound_was_enabled_ = Audio::get()->isSoundEnabled(); Audio::get()->enableSound(false); + // El fons (graella) ha d'aparèixer ja muntat: la demo és una partida en marxa. + playfield_.completeBuild(); } else { stage_manager_->init(); }