diff --git a/scenes/контроль/блок-в.tscn b/scenes/контроль/блок-в.tscn index 09711cd..9a341f5 100644 --- a/scenes/контроль/блок-в.tscn +++ b/scenes/контроль/блок-в.tscn @@ -11,7 +11,7 @@ [sub_resource type="GDScript" id="GDScript_oj3k3"] script/source = "@tool -extends PanelContainer +class_name blok_v extends PanelContainer @export var textures: Array @@ -21,10 +21,8 @@ signal pressed(control: PanelContainer) ## Значения уровней @export var value0: Array: set(v): - value0 = v - if not is_inside_tree(): - return - var items: Array[Node] = get_tree().get_nodes_in_group('уровни') + value0.assign(v) + var items: Array = get_level_nodes() var count: int = min(items.size(), v.size()) for i in count: items[i].value = v[i] @@ -42,7 +40,8 @@ signal pressed(control: PanelContainer) @export var min_value0: float: set(v): min_value0 = v - set_group_param('уровни', 'min_value', v) + var items: = get_level_nodes() + set_group_param(items, 'min_value', v) @export var min_value1: float: @@ -56,7 +55,8 @@ signal pressed(control: PanelContainer) @export var max_value0: float: set(v): max_value0 = v - set_group_param('уровни', 'max_value', v) + var items: = get_level_nodes() + set_group_param(items, 'max_value', v) @export var max_value1: float: @@ -70,7 +70,8 @@ signal pressed(control: PanelContainer) @export var step0: float: set(v): step0 = v - set_group_param('уровни', 'step', v) + var items: = get_level_nodes() + set_group_param(items, 'step', v) @export var step1: float: @@ -84,7 +85,8 @@ signal pressed(control: PanelContainer) @export var value_name0: String: set(v): value_name0 = v - set_group_param('названия', 'text', v) + var items: Array = get_name_nodes() + set_group_param(items, 'text', v) @export var value_name1: String: @@ -122,47 +124,80 @@ signal pressed(control: PanelContainer) @export var alignment: int: set(v): alignment = v - if not is_inside_tree(): + if is_inside_tree(): return $margin/vbox.alignment = v func _on_button_pressed(): emit_signal('pressed', self) func _enter_tree() -> void: call_deferred('_enter_tree_defered') -func set_value0(value: Array): value0 = value +func set_value0(value: Array): value0.assign(value) -func set_group_param(group: StringName, param: StringName, v) -> void: +func set_group_param(items: Array, param: StringName, v) -> void: if not is_inside_tree(): return - var items: Array[Node] = get_tree().get_nodes_in_group(group) + if not get_tree(): + return for i in items.size(): items[i].set(param, v) func set_value0_by_index(index: int, value: float) -> void: - var items: Array[Node] = get_tree().get_nodes_in_group('уровни') + var items: Array = get_level_nodes() items[index].value = value func _enter_tree_defered(): - var items: Array[Node] = get_tree().get_nodes_in_group('уровни') + var items: Array = get_level_nodes() var count: int = min(items.size(), value0.size()) for i in count: items[i].value = value0[i] items[i].min_value = min_value0 items[i].max_value = max_value0 items[i].step = step0 - $margin/vbox/grid1/level7.value = value1 - $margin/vbox/grid1/level7.min_value = min_value1 - $margin/vbox/grid1/level7.max_value = max_value1 - $margin/vbox/grid1/level7.step = step1 - $margin/vbox/grid2/lbl7.text = value_name1 - $margin/vbox.alignment = alignment - $margin/vbox/grid0/rname.text = rname - $margin/vbox/grid0/fname.text = fname - $margin/vbox/grid0/state.texture = textures[state] - set_group_param('названия', 'text', value_name0) + items = get_name_nodes() + set_group_param(items, 'text', value_name0) + if is_inside_tree(): + $margin/vbox/grid1/level7.value = value1 + $margin/vbox/grid1/level7.min_value = min_value1 + $margin/vbox/grid1/level7.max_value = max_value1 + $margin/vbox/grid1/level7.step = step1 + $margin/vbox/grid2/lbl7.text = value_name1 + $margin/vbox.alignment = alignment + $margin/vbox/grid0/rname.text = rname + $margin/vbox/grid0/fname.text = fname + $margin/vbox/grid0/state.texture = textures[state] + else: + push_warning('%s - вне дерева' % self) + + +func get_level_nodes() -> Array: + if not is_inside_tree(): + return [] + if not get_tree(): + return [] + return [ + $margin/vbox/grid1/level1, + $margin/vbox/grid1/level2, + $margin/vbox/grid1/level3, + $margin/vbox/grid1/level4, + $margin/vbox/grid1/level5, + $margin/vbox/grid1/level6 ] + + +func get_name_nodes() -> Array: + if not is_inside_tree(): + return [] + if not get_tree(): + return [] + return [ + $margin/vbox/grid2/lbl1, + $margin/vbox/grid2/lbl2, + $margin/vbox/grid2/lbl3, + $margin/vbox/grid2/lbl4, + $margin/vbox/grid2/lbl5, + $margin/vbox/grid2/lbl6 ] " [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rceim"]