#pragma once #include #include #include #include "external/fkyaml_node.hpp" class Entity; // Utilitats estàtiques per carregar plantilles d'entitats i llistes de // spawns. No té estat propi; tot és lliure d'instància. El Cache de // plantilles YAML viu dins el loader (estàtic de funció): si el mateix // tipus s'instancia N vegades, el YAML només es llegeix una. namespace EntityLoader { // Carrega la plantilla d'una entitat (p.ex. "torch") llegint // `data/entities//.yaml`. Llança `std::runtime_error` si // el fitxer no existeix o no parseja. El node retornat és una còpia // del que hi ha al cache — és barat, però si algun perfil ho exigís // es podria retornar `const&`. auto loadTemplate(const std::string& name) -> fkyaml::node; // Llegeix el bloc `entities:` d'un YAML de nivell i retorna la llista // de spawns en cru. Cada spawn és un node amb (com a mínim) `type` i // `position: [col, row]`. L'EntityManager decideix com interpretar-lo. auto readSpawns(const std::string& level_yaml_path) -> std::vector; // Crea una entitat del tipus demanat via la EntityFactory usant la // plantilla corresponent. Si no hi ha creator registrat o falla // l'accés al YAML, retorna nullptr. auto createByType(const std::string& type) -> std::unique_ptr; } // namespace EntityLoader