#pragma once

#include <cstdint>

/*
    Namespace SceneManager: gestiona el flujo entre las diferentes escenas del juego.

    Define las escenas principales del programa y las opciones de transición entre ellas.
    Proporciona variables globales inline para gestionar el estado actual de la escena.
*/

namespace SceneManager {

    // --- Escenas del programa ---
    enum class Scene : std::uint8_t {
        LOGO,             // Pantalla del logo
        TITLE,            // Pantalla de título/menú principal
        GAME,             // Juego principal
        RESTART_CURRENT,  // Especial: reinicia la escena que estaba corriendo
        QUIT              // Salir del programa
    };

    // --- Opciones para transiciones entre escenas ---
    enum class Options : std::uint8_t {
        NONE,           // Sin opciones especiales
        LOGO_TO_TITLE,  // Del logo al título
    };

    // --- Variables de estado globales ---
    inline Scene current = Scene::LOGO;               // Escena actual (en _DEBUG sobrescrito por Director tras cargar debug.yaml)
    inline Options options = Options::LOGO_TO_TITLE;  // Opciones de la escena actual
    inline Scene scene_before_restart = Scene::LOGO;  // escena a relanzar tras RESTART_CURRENT

}  // namespace SceneManager
