#pragma once #include "dinkyecs.hpp" #include "components.hpp" #include "config.hpp" #include "dinky_components.hpp" #include "point.hpp" namespace components { struct Player { DinkyECS::Entity entity; }; struct Position { Point location; }; struct Motion { int dx; int dy; bool random=false; }; struct Loot { int amount; }; struct Tile { std::string display; std::array foreground; std::array background; }; struct GameConfig { Config game; Config enemies; Config items; Config tiles; Config devices; }; struct EnemyConfig { int hearing_distance = 10; }; struct Debug { bool PATHS=false; bool LIGHT=false; }; struct Weapon { int damage = 0; }; struct Curative { int hp = 10; }; struct Combat { int hp; int damage; /* NOTE: This is used to _mark_ entities as dead, to detect ones that have just died. Don't make attack automatically set it.*/ bool dead = false; int attack(Combat &target); }; struct LightSource { int strength = 0; float radius = 1.0f; }; struct Device { json config; std::vector events; void configure_events(std::vector &event_names); }; void configure(ComponentMap& component_map); // these need to be here if you're using components::convert outside of components.cpp ENROLL_COMPONENT(Tile, display, foreground, background); }