#pragma once #include #include "game/scenes/palette_fade.hpp" #include "game/scenes/scene.hpp" #include "game/scenes/surface_handle.hpp" namespace Scenes { // Pantalla de "game over". Reemplaça `ModuleSequence::doMort()`. // // Flux: // 1. Carrega gfx/gameover.gif, arranca música "music/mort.ogg", fade-in de paleta. // 2. Mostra la pantalla ~10 segons o fins que l'usuari polse una tecla. // 3. Arranca música del menú ("music/menu.ogg") i fade-out de paleta. // 4. Marca num_piramide=0 i retorna nextState=1 perquè el Director // passe a l'escena del menú. class MortScene : public Scene { public: void onEnter() override; void tick(int delta_ms) override; [[nodiscard]] auto done() const -> bool override { return phase_ == Phase::DONE; } private: enum class Phase : std::uint8_t { FADING_IN, SHOWING, FADING_OUT, DONE }; SurfaceHandle gfx_; PaletteFade fade_; Phase phase_{Phase::FADING_IN}; int remaining_ms_{10000}; // 1000 ticks × 10 ms/tick del doMort original }; } // namespace Scenes