#pragma once

#include <SDL3/SDL.h>

#include <string>  // Para string
#include <vector>  // Para vector

class Director {
    public:
        explicit Director(std::vector<std::string> const& args);  // 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
        static auto checkProgramArguments(std::vector<std::string> const& args) -> std::string;  // Comprueba los parametros del programa

        // --- 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 runTitle();                              // Ejecuta la seccion de juego con el titulo y los menus
        static void runGame();                               // Ejecuta la seccion de juego donde se juega
};