#include "components.hpp" namespace components { void StairsDown(json &, DinkyECS::World &) { fmt::println("GOING DOWN!"); } void StairsUp(json &, DinkyECS::World &) { fmt::println("GOING UP!"); } void configure(DinkyECS::World &world, DinkyECS::Entity entity, json& entity_data) { for(auto &comp : entity_data["components"]) { json& config = comp["config"]; if(comp["type"] == "Weapon") { world.set(entity, {config["damage"]}); } else if(comp["type"] == "LightSource") { world.set(entity, {config["strength"], config["radius"]}); } else if(comp["type"] == "Loot") { world.set(entity, {config["amount"]}); } else if(comp["type"] == "Tile") { world.set(entity, {config["chr"]}); } else if(comp["type"] == "EnemyConfig") { world.set(entity, {config["hearing_distance"]}); } else if(comp["type"] == "Combat") { world.set(entity, {config["hp"], config["damage"]}); } else if(comp["type"] == "Curative") { world.set(entity, {config["hp"]}); } else if(comp["type"] == "Motion") { world.set(entity, {config["dx"], config["dy"], config["random"]}); } else if(comp["type"] == "Device") { Device device{.config=config, .actions={}}; for(auto name : comp["actions"]) { if(name == "StairsUp") { device.actions.push_back(StairsUp); } else if(name == "StairsDown") { device.actions.push_back(StairsUp); } } world.set(entity, device); } else { dbc::sentinel(fmt::format("ITEM COMPONENT TYPE MISSING: {}", std::string(comp["type"]))); } } } }