#pragma once

#include <SDL3/SDL.h>

#include <string>  // Para string

class Director {
   public:
    Director();                // Constructor
    ~Director();               // Destructor
    static auto run() -> int;  // Bucle principal

   private:
    // --- Variables ---
    std::string executable_path_;  // Path del ejecutable
    std::string system_folder_;    // Carpeta del sistema donde guardar datos

    // --- Funciones ---
    void createSystemFolder(const std::string& folder);  // Crea la carpeta del sistema donde guardar datos
    void setFileList();                                  // Carga la configuración de assets desde assets.yaml
    static void runLogo();                               // Ejecuta la seccion de juego con el logo
    static void runLoadingScreen();                      // Ejecuta la seccion de juego de la pantalla de carga
    static void runTitle();                              // Ejecuta la seccion de juego con el titulo y los menus
    static void runCredits();                            // Ejecuta la seccion de los creditos del juego
    static void runDemo();                               // Ejecuta la seccion de la demo, donde se ven pantallas del juego
    static void runEnding();                             // Ejecuta la seccion del final del juego
    static void runEnding2();                            // Ejecuta la seccion del final del juego
    static void runGameOver();                           // Ejecuta la seccion del final de la partida
    static void runGame();                               // Ejecuta la seccion de juego donde se juega
};