Files
streaming_world/src/modules/stream/ui/building_layout_graph.h

48 lines
1.6 KiB
C++

#include <core/os/memory.h>
#include <core/io/config_file.h>
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<String> *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<flecs::entity> *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<Pair<int, String> > *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;
};