feat(demo): transició per fosa a/desde negre en el salt títol→demo

This commit is contained in:
2026-05-29 09:21:02 +02:00
parent 472c543c7b
commit 068f42782b
7 changed files with 158 additions and 5 deletions
+10 -1
View File
@@ -55,7 +55,8 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
text_(sdl.getRenderer()),
starfield_parallax_(sdl.getRenderer()),
playfield_(sdl.getRenderer()),
border_(sdl.getRenderer()) {
border_(sdl.getRenderer()),
fade_(sdl.getRenderer()) {
// Recuperar configuración de match des del context
match_config_ = context_.getMatchConfig();
@@ -170,6 +171,8 @@ GameScene::GameScene(SDLManager& sdl, SceneContext& context)
Audio::get()->enableSound(false);
// El fons (graella) ha d'aparèixer ja muntat: la demo és una partida en marxa.
playfield_.completeBuild();
// Fosa des de negre sobre el joc ja en marxa (transició suau des del títol).
fade_.start(1.0F, 0.0F, Defaults::Game::Fade::DEMO_IN_DURATION);
} else {
stage_manager_->init();
}
@@ -363,6 +366,8 @@ void GameScene::updateShipsControl(float delta_time) {
}
auto GameScene::stepDemo(float delta_time) -> bool {
fade_.update(delta_time); // fosa d'entrada des de negre
// Qualsevol input trenca la demo i torna al títol (música intacta).
if (Input::get()->checkAnyPlayerAction(DEMO_EXIT_ACTIONS)) {
context_.setNextScene(SceneType::TITLE, Option::JUMP_TO_TITLE_MAIN);
@@ -708,6 +713,10 @@ void GameScene::draw() {
drawLevelCompletedState();
break;
}
// Fosa d'entrada de la demo: per damunt de tot. No-op fora del mode DEMO
// (fade_ mai s'arrenca) i quan ja ha acabat (alpha 0).
fade_.draw();
}
void GameScene::drawEnemies() const {