#pragma once #include #include // Para unique_ptr #include // Para string #include "game/scene_manager.hpp" // Para SceneManager::Scene #include "game/scenes/scene.hpp" // Para Scene base class Director { public: Director(); // Constructor: inicialitza sistemes i crea l'escena inicial ~Director(); // Destructor // SDL3 Callback API: un frame i un event auto iterate() -> SDL_AppResult; auto handleEvent(const SDL_Event& event) -> SDL_AppResult; private: // --- Variables --- std::string executable_path_; // Path del ejecutable std::string system_folder_; // Carpeta del sistema donde guardar datos std::unique_ptr active_scene_; // Escena activa SceneManager::Scene current_scene_{SceneManager::Scene::BOOT_LOADER}; // Tipus d'escena activa bool boot_loading_{true}; // True mientras Cache::loadStep() no haya acabado // --- 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 switchToActiveScene(); // Construeix l'escena segons SceneManager::current void finishBoot(); // Inits que dependen del cache, ejecutado tras loadStep==done };