#pragma once

#include <cstdint>

#include "game/scenes/palette_fade.hpp"
#include "game/scenes/scene.hpp"
#include "game/scenes/surface_handle.hpp"

namespace Scenes {

    // Banner pre-piràmide ("PIRÀMIDE X"). Reemplaça `ModuleSequence::doBanner()`.
    //
    // Flux:
    //   1. Arranca música "music/banner.ogg" i carrega gfx/ffase.gif.
    //   2. Pinta títol, subtítol i número de piràmide segons Info::ctx.num_piramide.
    //   3. Fade-in de paleta.
    //   4. Mostra ~5s o fins que es polse una tecla.
    //   5. Ja::fadeOutMusic(250) + fade-out de paleta.
    //   6. Retorna nextState=0 per a entrar al ModuleGame.
    //
    // Registrat al SceneRegistry amb state_keys 2..5 (els num_piramide on
    // el vell `doBanner()` es cridava).
    class BannerScene : public Scene {
       public:
        void onEnter() override;
        void tick(int delta_ms) override;
        [[nodiscard]] auto done() const -> bool override { return phase_ == Phase::DONE; }
        [[nodiscard]] auto nextState() const -> int override { return 0; }

       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_{5000};
    };

}  // namespace Scenes
