#include #include class BuildingLayoutGraph { static BuildingLayoutGraph *singleton; BuildingLayoutGraph(); ConfigFile config; Array public_rooms; Array private_rooms; flecs::entity create_graph_entity(const String &base_path, const String &entity_type); public: virtual ~BuildingLayoutGraph(); static BuildingLayoutGraph *get_singleton(); static void cleanup() { memdelete(singleton); singleton = nullptr; } void get_room_data(int id, Array &result); const Array &get_private_rooms() const; const Array &get_public_rooms() const; void create_zone(const String &base_path, int zone_type); void create_unit(const String &base_path); void create_floor(const String &base_path); void create_room(const String &base_path, int id); void destroy_graph_entity(const String &path); flecs::entity get_layout_base() const; flecs::entity get_layout_grid_base() const; void get_layout_list(List *keys) const; void create_new_layout(const String &layout_name); flecs::entity get_layout(const String &layout_name) const; flecs::entity get_grid_layout(const String &layout_name) const; void get_layout_entity_children(flecs::entity layout_e, List *keys) const; void recalculate_size(const String &layout_name); void update_button_positions(const String &layout_name); void get_menu_entries(flecs::entity e, List > *list) const; void save_layouts(); void load_layouts(); void create_interior_tilemap(const String &layout_name); int get_layout_count() const; int get_children_count(flecs::entity base_e) const; };