step 9: intro_sprites_scene com a sub-escena (elimina doIntroSprites + 3 variants aleatòries)

This commit is contained in:
2026-04-16 08:38:47 +02:00
parent e18b7321eb
commit d343e719ca
9 changed files with 459 additions and 624 deletions

View File

@@ -1,6 +1,9 @@
#pragma once
#include <memory>
#include "core/jail/jdraw8.hpp"
#include "scenes/intro_sprites_scene.hpp"
#include "scenes/scene.hpp"
#include "scenes/surface_handle.hpp"
@@ -20,9 +23,10 @@ namespace scenes {
// per generar els parpelleigs finals.
// 3. Cicle de paleta: 256 passos × 20 ms modificant els índexs 16..31.
// 4. Espera final 200 ms.
// 5. Delega a `ModuleSequence::doIntroSprites(gfx)` (temporal — Step 9
// del pla la reescriurà com a IntroSpritesScene i la delegació
// desapareixerà).
// 5. Transfereix el gfx_ a una `IntroSpritesScene` com a sub-escena
// i li delega els ticks fins que acaba (anima el prota + momia +
// mapa, amb 3 variants aleatòries). En acabar, setzea num_piramide
// = 0 per passar al menú.
//
// Registrada al SceneRegistry amb state_key = 255: la mateixa factory que
// per a IntroNewLogoScene, però retornada quan `use_new_logo == false`.
@@ -41,8 +45,8 @@ class IntroScene : public Scene {
InitialWait, // 1000 ms pantalla negra
Reveal, // 15 passos del wordmark
PaletteCycle, // 256 × 20 ms mutant pal[16..31]
FinalWait, // 200 ms abans de delegar
Delegate, // crida ModuleSequence::doIntroSprites (Step 9 elimina)
FinalWait, // 200 ms abans de la sub-escena de sprites
Sprites, // tick delegat a IntroSpritesScene fins que acaba
Done,
};
@@ -51,6 +55,7 @@ class IntroScene : public Scene {
SurfaceHandle gfx_;
JD8_Palette pal_{nullptr}; // propietat transferida a main_palette via SetScreenPalette
std::unique_ptr<IntroSpritesScene> sprites_scene_;
Phase phase_{Phase::InitialWait};
int phase_acc_ms_{0};