feat(entities): andamiatge del sistema d'entitats (classes, factory, bus, YAML, placeholders, smoke tests)

This commit is contained in:
JailDesigner committed 2026-04-21 12:35:19 +02:00
1 parent 984cc820c0
commit 96b71b0f65
48 files changed
+1957

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
#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