#pragma once

#include <SDL3/SDL.h>

namespace Menu {
    void init();
    void destroy();

    // "Actiu": el menú accepta input. Fals durant l'animació de tancament.
    [[nodiscard]] auto isOpen() -> bool;
    // "Visible": hi ha una caixa pintada (incloent l'animació de tancament).
    // Overlay la usa per a decidir si cridar render().
    [[nodiscard]] auto isVisible() -> bool;
    void toggle();
    void close();

    // Pinta el menú sobre el buffer ARGB — cridat des d'Overlay::render si està visible
    void render(Uint32* pixel_data);

    // Gestió d'input — cridat des del Director en KEY_DOWN
    void handleKey(SDL_Scancode sc);

    // Mode de captura de tecla (per al menú de remapeig)
    [[nodiscard]] auto isCapturing() -> bool;
    void captureKey(SDL_Scancode sc);  // assigna la tecla capturada (ESC cancel·la)
}  // namespace Menu
