39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
// entity_loader.hpp - Carregador genèric de descriptors d'entitats en YAML
|
|
// © 2026 JailDesigner
|
|
//
|
|
// Cada entitat viu a `data/entities/<name>/<name>.yaml` (mateix patró que el
|
|
// projecte germà aee_arcade). Aquest loader resol el path, llegeix del
|
|
// resource pack via Resource::Helper, parseja amb fkyaml i cacheja el node
|
|
// per evitar relectures. Retorna nullptr en cas d'error (el caller decideix
|
|
// si abortar).
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
|
|
#include "external/fkyaml_node.hpp"
|
|
|
|
namespace Entities {
|
|
|
|
class EntityLoader {
|
|
public:
|
|
EntityLoader() = delete; // tot estàtic
|
|
|
|
// Carrega el descriptor d'una entitat per nom (ex. "player" →
|
|
// "entities/player/player.yaml"). Retorna nullptr si no es pot
|
|
// carregar o parsejar. Cachejat per nom.
|
|
static auto load(const std::string& name) -> std::shared_ptr<fkyaml::node>;
|
|
|
|
// Buidar caché (útil per debug/recàrrega).
|
|
static void clearCache();
|
|
|
|
[[nodiscard]] static auto getCacheSize() -> size_t;
|
|
|
|
private:
|
|
static std::unordered_map<std::string, std::shared_ptr<fkyaml::node>> cache;
|
|
};
|
|
|
|
} // namespace Entities
|