]> Untitled Git - wolf-seeking-sheep.git/blob - addons/dialogic/Editor/Events/Fields/field_array.gd
Initial Godot project with Dialogic 2.0-Alpha-17
[wolf-seeking-sheep.git] / addons / dialogic / Editor / Events / Fields / field_array.gd
1 @tool
2 extends DialogicVisualEditorField
3
4 ## Event block field for editing arrays.
5
6
7 const ArrayValue := "res://addons/dialogic/Editor/Events/Fields/array_part.tscn"
8
9
10 func _ready() -> void:
11         %Add.icon = get_theme_icon("Add", "EditorIcons")
12         %Add.pressed.connect(_on_AddButton_pressed)
13
14
15 func _set_value(value:Variant) -> void:
16         value = value as Array
17         for child in get_children():
18                 if child != %Add:
19                         child.queue_free()
20
21         for item in value:
22                 var x: Node = load(ArrayValue).instantiate()
23                 add_child(x)
24                 x.set_value(item)
25                 x.value_changed.connect(recalculate_values)
26                 move_child(%Add, -1)
27
28
29 func _on_value_changed(value:Variant) -> void:
30         value_changed.emit(property_name, value)
31
32
33 func recalculate_values() -> void:
34         var arr := []
35         for child in get_children():
36                 if child != %Add and !child.is_queued_for_deletion():
37                         arr.append(child.get_value())
38         _on_value_changed(arr)
39
40
41 func _on_AddButton_pressed() -> void:
42         var x: Control = load(ArrayValue).instantiate()
43         add_child(x)
44         x.set_value("")
45         x.value_changed.connect(recalculate_values)
46         recalculate_values()
47         move_child(%Add, -1)
48