#pragma once #include #include // Para unique_ptr #include // Para string #include "game/scene_manager.hpp" // Para SceneManager::Scene class Logo; class Title; class Game; class Director { public: Director(); // Constructor ~Director(); // Destructor auto iterate() -> SDL_AppResult; // Una iteración del bucle principal (callback model) private: // --- Variables --- std::string executable_path_; // Path del ejecutable std::string system_folder_; // Carpeta del sistema donde guardar datos // --- Gestión de escenas --- SceneManager::Scene active_scene_{SceneManager::Scene::QUIT}; // Escena activa (la que tiene objeto creado) std::unique_ptr logo_; std::unique_ptr title_; std::unique_ptr<Game> game_; // --- 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 void destroyCurrentScene(); // Destruye la escena activa void createScene(SceneManager::Scene scene); // Crea la escena indicada };