#include "components.hpp" #include "point.hpp" namespace components { ENROLL_COMPONENT(Loot, amount); ENROLL_COMPONENT(Position, location.x, location.y); ENROLL_COMPONENT(Weapon, damage); ENROLL_COMPONENT(Curative, hp); ENROLL_COMPONENT(EnemyConfig, hearing_distance); ENROLL_COMPONENT(Motion, dx, dy, random); ENROLL_COMPONENT(Combat, hp, damage, dead); ENROLL_COMPONENT(LightSource, strength, radius); ENROLL_COMPONENT(Device, config, events); ENROLL_COMPONENT(Sprite, name); void configure_entity(const ComponentMap& component_map, DinkyECS::World& world, DinkyECS::Entity ent, json& data) { for (auto &i : data) { dbc::check(i.contains("_type") && i["_type"].is_string(), fmt::format("component has no _type: {}", data.dump())); dbc::check(component_map.contains(i["_type"]), fmt::format("component_map doesn't have type {}", std::string(i["_type"]))); component_map.at(i["_type"])(world, ent, i); } } void configure(ComponentMap& component_map) { components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); components::enroll(component_map); } }