step 3: menu_scene substituix doMenu() + fix JI_Update al fiber loop
This commit is contained in:
57
source/scenes/menu_scene.hpp
Normal file
57
source/scenes/menu_scene.hpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#pragma once
|
||||
|
||||
#include "scenes/frame_animator.hpp"
|
||||
#include "scenes/palette_fade.hpp"
|
||||
#include "scenes/scene.hpp"
|
||||
#include "scenes/surface_handle.hpp"
|
||||
|
||||
namespace scenes {
|
||||
|
||||
// Menú del títol. Reemplaça `ModuleSequence::doMenu()`.
|
||||
//
|
||||
// Flux:
|
||||
// 1. Carrega menu.gif (fondo) i menu2.gif (sprites) + paleta.
|
||||
// 2. Pintat inicial estàtic (fondo, logo, camell frame 0, base "jdes"),
|
||||
// fade-in de paleta.
|
||||
// 3. Loop d'animació: escroll parallax de horitzó (cada 320 ms) i
|
||||
// palmeres (cada 80 ms), cicle del camell (4 frames × 160 ms),
|
||||
// i el text "polsa tecla" parpallejant cada 2 s (visible 1.4 s,
|
||||
// amagat 0.6 s, igual que el `contador % 100 > 30` original).
|
||||
// 4. Quan l'usuari polsa qualsevol tecla — o 'P' per a activar Pepe —
|
||||
// llegim `info::ctx.pepe_activat`, disparem fade-out i marquem
|
||||
// num_piramide=1 (vas a doSlides).
|
||||
//
|
||||
// Registrat al SceneRegistry amb state_key = 0.
|
||||
class MenuScene : public Scene {
|
||||
public:
|
||||
void onEnter() override;
|
||||
void tick(int delta_ms) override;
|
||||
bool done() const override { return phase_ == Phase::Done; }
|
||||
int nextState() const override { return 1; }
|
||||
|
||||
private:
|
||||
enum class Phase { FadingIn,
|
||||
Showing,
|
||||
FadingOut,
|
||||
Done };
|
||||
|
||||
void render();
|
||||
|
||||
SurfaceHandle fondo_;
|
||||
SurfaceHandle gfx_;
|
||||
PaletteFade fade_;
|
||||
FrameAnimator camello_{4, 160, true};
|
||||
|
||||
Phase phase_{Phase::FadingIn};
|
||||
|
||||
// Scrollers horizontals. Mouen 1 pixel per pas.
|
||||
int palmeres_{0};
|
||||
int horitzo_{0};
|
||||
int palmeres_acc_ms_{0};
|
||||
int horitzo_acc_ms_{0};
|
||||
|
||||
// Acumulador per al parpalleig del text "polsa tecla".
|
||||
int blink_ms_{0};
|
||||
};
|
||||
|
||||
} // namespace scenes
|
||||
Reference in New Issue
Block a user