Files
aee-arcade/source/game/entities/entity_loader.hpp
T

35 lines
1.4 KiB
C++

#pragma once
#include <memory>
#include <string>
#include <vector>
#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/<name>/<name>.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<fkyaml::node>;
// 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<Entity>;
} // namespace EntityLoader