// bullet_registry.hpp - Registre estàtic de configuracions de bala // © 2026 JailDesigner // // Diverses configuracions per nom (data/entities//.yaml). El // config "bullet" es manté com a default històric (player) i es carrega via // load(). Els altres (ex. "bullet_long" per a bales d'enemic) es carreguen // peresosament la primera vegada que algú els demana per nom. #pragma once #include #include #include "game/entities/bullet_config.hpp" class BulletRegistry { public: BulletRegistry() = delete; // Carrega data/entities/bullet/bullet.yaml com a default. Retorna false si falla. static auto load() -> bool; // Accés a la configuració per defecte ("bullet"). Avorta amb log fatal si // load() no s'ha cridat o ha fallat. Mantingut per a backwards compat del Bullet ctor. static auto get() -> const BulletConfig&; // Accés a una configuració per nom. Lazy-load: si no està al map, intenta // carregar data/entities//.yaml. Retorna nullptr si no es pot. static auto get(const std::string& name) -> const BulletConfig*; private: static std::unordered_map configs; static bool loaded; };