Исправление. "Блок-В": Экземпляры уровней из разных "блок-в" находятся в одной группе

This commit is contained in:
sasha80
2025-08-21 15:31:25 +03:00
parent 35294d4b1d
commit f7a1dd7172

View File

@@ -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"]