#pragma once

#include <cstdint>

#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
