35 lines
1.4 KiB
C++
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
|