Graph look + cleanup

This commit is contained in:
2024-10-28 03:48:31 +03:00
parent 21fb3833cc
commit a91bda34e5
2 changed files with 42 additions and 84 deletions

View File

@@ -79,10 +79,10 @@ entries=[ {
}, {
"children": [ ],
"index": 12,
"name": "wc_0",
"room_type": 200,
"name": "bedroom_0",
"room_type": 202,
"type": "room",
"window": false
"window": true
}, {
"children": [ ],
"index": 13,
@@ -93,10 +93,10 @@ entries=[ {
}, {
"children": [ ],
"index": 14,
"name": "bedroom_0",
"room_type": 202,
"name": "wc_0",
"room_type": 200,
"type": "room",
"window": true
"window": false
}, {
"children": [ ],
"index": 15,

View File

@@ -150,9 +150,6 @@ public:
std::vector<Variant> args_data2 = {
/* clang-format off */
MARGIN_RIGHT, 1.0f, MARGIN_BOTTOM, 1.0f,
// Control::SIZE_EXPAND_FILL, Control::SIZE_EXPAND_FILL,
// MARGIN_RIGHT, 1.0f, MARGIN_BOTTOM, 1.0f,
// Control::SIZE_EXPAND_FILL, Control::SIZE_EXPAND_FILL,
"Layout Graph",
MARGIN_RIGHT, 1.0f, MARGIN_BOTTOM, 1.0f,
"buildings_layout_graph",
@@ -181,6 +178,8 @@ public:
print_line(String::num(value));
}
Vector<Vector2> buttons;
#define DEPTH_MUL 160
#define Y_MUL 130
void update_buttons(ColorRect *canvas)
{
assert(current_layout.length() > 0);
@@ -207,19 +206,27 @@ public:
int y = e.get<WorldEditor::components::
buildings_layout_graph_node>()
->y_pos;
#if 0
e.get_mut<WorldEditor::components::
buildings_layout_graph_node>()
->y_pos = y;
#endif
/* make button here */
Vector2 pt(depth * 120 + 40, y * 110 + 40);
Vector2 pt(depth * DEPTH_MUL + 40, y * Y_MUL + 40);
if (pt.x + 16.0f >= canvas->get_size().x ||
pt.y + 16.0f >= canvas->get_size().y) {
Vector2 old_size = canvas->get_size();
Vector2 new_size(MAX(pt.x + 200.0f, old_size.x),
MAX(pt.y + 200.0f,
old_size.y));
Object::cast_to<Control>(canvas->get_parent())
->set_custom_minimum_size(new_size);
canvas->set_size(new_size);
}
{
VBoxContainer *box = memnew(VBoxContainer);
MenuButton *button = memnew(MenuButton);
button->set_text("");
canvas->add_child(button);
box->add_child(button);
canvas->add_child(box);
button->set_size(Vector2(80, 40));
button->set_position(pt);
box->set_position(pt);
box->update();
List<Pair<int, String> > menu_options;
List<Pair<int, String> >::Element *pe;
BuildingLayoutGraph::get_singleton()
@@ -267,16 +274,6 @@ public:
}
button->set_text(button->get_text() +
String(e.name()));
#if 0
button->get_popup()->add_item(
"Create block unit", 100);
button->get_popup()->add_item(
"Create private zone", 101);
button->get_popup()->add_item(
"Create public zone", 102);
button->get_popup()->add_item(
"Create hallway", 103);
#endif
}
if (e.has<WorldEditor::components::
buildings_layout_room>()) {
@@ -288,12 +285,11 @@ public:
button->get_text() + "Room\n" +
String(e.name() + " " +
itos(room_type)));
PopupMenu *mp = memnew(PopupMenu);
std::vector<Variant> args = {
"Room Area: ", "area_value"
"Area: ", "area_value"
};
HashMap<String, Object *> save_data;
ui_field::ui_field_builder(canvas, mp,
ui_field::ui_field_builder(canvas, box,
"p{h{lx#$}}",
args.data(),
args.size(),
@@ -304,65 +300,15 @@ public:
"room_size_entered",
varray(save_data["area_value"],
String(e.path())));
button->get_popup()->add_child(mp);
mp->set_name("subedit");
button->get_popup()->add_submenu_item(
"SubEdit Moo", "subedit", 400);
}
#if 0
button->set_text(
button->get_text() + "size: \n" +
itos(e.get<WorldEditor::components::
buildings_layout_graph_node>()
->size));
#endif
// button->get_popup()->add_separator();
// button->get_popup()->add_item("Delete", 1000);
button->get_popup()->connect(
"id_pressed", this, "menu_pressed",
varray(button, String(e.path())));
}
#if 0
int count = 0;
int offset = y;
#endif
e.children([&queue](flecs::entity fe) {
#if 0
int size =
fe.get<WorldEditor::components::
buildings_layout_graph_node>()
->size;
fe.set<WorldEditor::components::
buildings_layout_graph_node>(
{ depth + 1, offset, size });
offset += size;
count++;
#endif
queue.push_back(fe);
});
// if (count > 1)
// height += count - 1;
// // height++;
}
#if 0
if (layout_empty) {
MenuButton *button = memnew(MenuButton);
button->set_text("Entry");
canvas->add_child(button);
button->set_size(Vector2(80, 40));
button->set_position(Vector2(40, 45));
button->get_popup()->add_item("Create block unit", 100);
button->get_popup()->add_item("Create private zone",
101);
button->get_popup()->add_item("Create public zone",
102);
button->get_popup()->add_item("Create hallway", 103);
button->get_popup()->connect("id_pressed", this,
"menu_pressed",
varray(button));
}
#endif
}
void update_graph()
{
@@ -427,10 +373,21 @@ public:
int y = button_e.get<WorldEditor::components::
buildings_layout_graph_node>()
->y_pos;
Vector2 pt(depth * 120 + 40, y * 110 + 40);
Vector2 pt(depth * DEPTH_MUL + 40,
y * Y_MUL + 40);
Vector2 p1x = pt + Vector2(40, 20);
Vector2 p2x = pt + Vector2(110, 20);
float r = 40.0f;
canvas_item->draw_rect(
Rect2(p1x - Vector2(0, r),
(p2x - p1x) +
Vector2(0, r * 2.0)),
Color(0.4, 0.4, 0.55, 1.0), true, 4.0f,
true);
canvas_item->draw_circle(
pt + Vector2(40, 20), 40.0f,
Color(0.4, 0.4, 0.55, 1.0));
p1x, r, Color(0.4, 0.4, 0.55, 1.0));
canvas_item->draw_circle(
p2x, r, Color(0.4, 0.4, 0.55, 1.0));
p1 = pt + Vector2(40, 20);
}
queue.pop_front();
@@ -442,7 +399,8 @@ public:
int y = e.get<WorldEditor::components::
buildings_layout_graph_node>()
->y_pos;
Vector2 p2(depth * 120 + 40, y * 110 + 40);
Vector2 p2(depth * DEPTH_MUL + 40,
y * Y_MUL + 40);
p2 += Vector2(40, 20);
Vector2 p3(p1.x, p2.y);
canvas_item->draw_line(p1, p3,