#pragma once #include "components.hpp" #include "levelmanager.hpp" namespace System { using namespace components; using namespace DinkyECS; using std::string; void lighting(GameLevel &level); void motion(GameLevel &level); void collision(GameLevel &level); void death(GameLevel &level); void generate_paths(GameLevel &level); void enemy_pathing(GameLevel &level); void enemy_ai_initialize(GameLevel &level); void init_positions(World &world, SpatialMap &collider); void device(World &world, Entity actor, Entity item); void plan_motion(World& world, Point move_to); std::wstring draw_map(GameLevel level, size_t view_x, size_t view_y, int compass_dir); Entity spawn_item(World& world, const string& name); bool drop_item(GameLevel& level, Entity item); void enemy_ai(GameLevel &level); void combat(GameLevel &level, int attack_id); std::shared_ptr sprite_effect(GameLevel &level, Entity entity); void player_status(GameLevel &level); void distribute_loot(World &world, Entity& ent, nlohmann::json& entity_data); void pickup(GameLevel &level, Entity entity); bool place_in_container(World& world, Entity cont_id, const string& name, Entity world_entity); void remove_from_container(World& world, Entity cont_id, const string& name); }