#pragma once #include "dinkyecs.hpp" #include "combat.hpp" #include "inventory.hpp" #include "tser.hpp" #include "config.hpp" namespace components { typedef std::function Action; struct Device { json config; std::vector actions; void hit(DinkyECS::World &world) { for(auto& action : actions) { action(config, world); } } }; void StairsDown(json &data, DinkyECS::World &world); void StairsUp(json &data, DinkyECS::World &world); void DummyDeviceAction(json &data, DinkyECS::World &world); struct Player { DinkyECS::Entity entity; DEFINE_SERIALIZABLE(Player, entity); }; struct Position { Point location; DEFINE_SERIALIZABLE(Position, location); }; struct Motion { int dx; int dy; bool random=false; DEFINE_SERIALIZABLE(Motion, dx, dy); }; struct Loot { int amount; DEFINE_SERIALIZABLE(Loot, amount); }; struct Tile { std::string chr; DEFINE_SERIALIZABLE(Tile, chr); }; 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; }; void configure(DinkyECS::World &world, DinkyECS::Entity entity, json& entity_data); }