Рефактор. Встроить скрипты в сцену
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
@tool
|
||||
class_name pribor_externals extends 'res://scenes/контроль/прибор.gd'
|
||||
var UnitPanel = load('res://scenes/контроль/элемент-ю.tscn')
|
||||
|
||||
|
||||
func on_line_changed(unit_inst: unit.Unit, unit_panel: Control): unit_panel.state = unit_inst.online
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
for unit_inst in network.units.values():
|
||||
var unit_panel = UnitPanel.instantiate()
|
||||
unit_panel.fname = unit_inst.name
|
||||
$grid.add_child(unit_panel)
|
||||
unit_inst.connect('line_changed', on_line_changed.bind(unit_panel))
|
||||
on_line_changed(unit_inst, unit_panel)
|
||||
@@ -1 +0,0 @@
|
||||
uid://beb41qdahkdp5
|
||||
@@ -1,16 +1,34 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dwgvv4b4a5t1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://beb41qdahkdp5" path="res://scenes/pribor-externals/externals.gd" id="1_pacm1"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_pacm1"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_dk54t"]
|
||||
script/source = "@tool
|
||||
class_name externals extends 'res://scenes/контроль/прибор.gd'
|
||||
|
||||
var UnitPanel = load('res://scenes/контроль/элемент-ю.tscn')
|
||||
|
||||
func on_line_changed(unit_inst: unit.Unit, unit_panel: Control): unit_panel.state = unit_inst.online
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
for unit_inst in network.units.values():
|
||||
var unit_panel = UnitPanel.instantiate()
|
||||
unit_panel.fname = unit_inst.name
|
||||
$grid.add_child(unit_panel)
|
||||
unit_inst.connect('line_changed', on_line_changed.bind(unit_panel))
|
||||
on_line_changed(unit_inst, unit_panel)
|
||||
"
|
||||
|
||||
[node name="externals" type="PanelContainer"]
|
||||
offset_left = 71.0
|
||||
offset_top = 75.0
|
||||
offset_right = 756.0
|
||||
offset_bottom = 964.0
|
||||
theme_override_styles/panel = SubResource("StyleBoxEmpty_pacm1")
|
||||
script = ExtResource("1_pacm1")
|
||||
script = SubResource("GDScript_dk54t")
|
||||
|
||||
[node name="grid" type="GridContainer" parent="."]
|
||||
layout_mode = 2
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
extends Panel
|
||||
|
||||
"""
|
||||
Режим контроль
|
||||
"""
|
||||
#TODO: рефактор: заменить подчёркивание на тире
|
||||
const PRIBORS_RES = \
|
||||
{
|
||||
'externals': ['res://scenes/pribor-externals/externals.tscn', 'Контроль подключения внешних систем'],
|
||||
'pribor_prd_k_1': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 1'],
|
||||
'pribor_prd_k_2': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 2'],
|
||||
'pribor_prd_k_3': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 3'],
|
||||
'pribor_prd_k_4': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 4'],
|
||||
'pribor_prd_n_1': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 1'],
|
||||
'pribor_prd_n_2': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 2'],
|
||||
'pribor_prd_n_3': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 3'],
|
||||
'pribor_prd_n_4': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 4'],
|
||||
'pribor_prd_v_1': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 1'],
|
||||
'pribor_prd_v_2': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 2'],
|
||||
'pribor_prd_v_3': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 3'],
|
||||
'pribor_prd_v_4': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 4'],
|
||||
'pribor_rtr': ['res://scenes/pribor-afsp/pribor-bpo.tscn', 'Контроль исправности прибора РТР'],
|
||||
'pribor_afsp_1': ['res://scenes/pribor-afsp/pribor-afsp-1.tscn', 'Контроль исправности прибора АФСП 1'],
|
||||
'pribor_afsp_2': ['res://scenes/pribor-afsp/pribor-afsp-2.tscn', 'Контроль исправности прибора АФСП 2'],
|
||||
'pribor_uf': ['res://scenes/pribor-uf/pribor-uf.tscn', 'Контроль исправности прибора УФ'],
|
||||
'pribor_uyep': ['res://scenes/pribor-uyep/pribor-uyep.tscn', 'Контроль исправности устройства У-ЭП'],
|
||||
}
|
||||
|
||||
|
||||
func on_line_changed(u, conn_node, _pribor_meta): conn_node.set_val(u.online)
|
||||
|
||||
|
||||
func _ready():
|
||||
var group = ButtonGroup.new()
|
||||
for k in PRIBORS_RES:
|
||||
var pribor_node = get_node(k)
|
||||
var pribor_path = PRIBORS_RES[k][0]
|
||||
var header_text = PRIBORS_RES[k][1]
|
||||
pribor_node.set_button_group(group)
|
||||
pribor_node.connect('button_down', Callable(self, 'on_pribor_press').bind(pribor_path, header_text, pribor_node))
|
||||
var conn_node = pribor_node.get_node('connect_pribor')
|
||||
var pribor_meta = pribor_node.get_meta('unit_name', [])
|
||||
var pribor_proc = pribor_node.get_meta('online_proc', '')
|
||||
if pribor_proc == '':
|
||||
continue
|
||||
if pribor_meta.size():
|
||||
for i in pribor_meta.size():
|
||||
var unit_pribor = network.get_unit_instance(pribor_meta[i])
|
||||
unit_pribor.connect('line_changed', Callable(self, pribor_proc).bind(conn_node, pribor_meta))
|
||||
|
||||
|
||||
func online_change_arr(_u, conn_node, pribor_meta):
|
||||
var state_online = true
|
||||
for i in pribor_meta.size():
|
||||
var unit_pribor = network.get_unit_instance(pribor_meta[i])
|
||||
if not unit_pribor.online:
|
||||
state_online = false
|
||||
break
|
||||
conn_node.set_val(state_online)
|
||||
|
||||
|
||||
func on_pribor_press(pribor_path, header_text, pribor_node):
|
||||
var items = get_tree().get_nodes_in_group('pribor_items')
|
||||
for item in items:
|
||||
remove_child(item)
|
||||
item.queue_free()
|
||||
var pribor_obj = load(pribor_path)
|
||||
if not pribor_obj:
|
||||
push_error('не загружено: \"%s\" (%s)' % [pribor_path, header_text])
|
||||
return
|
||||
var pribor = pribor_obj.instantiate()
|
||||
if not pribor:
|
||||
push_error('экземпляр не создан: \"%s\" (%s)' % [pribor_path, header_text])
|
||||
return
|
||||
$lbl_header.text = header_text
|
||||
var meta_list = pribor_node.get_meta_list()
|
||||
if meta_list.find('unit_name') > -1:
|
||||
var unit_name = pribor_node.get_meta('unit_name')
|
||||
pribor.set_meta('unit_name', unit_name)
|
||||
pribor.add_to_group('pribor_items')
|
||||
add_child(pribor)
|
||||
@@ -1 +0,0 @@
|
||||
uid://b0wcp76bbl2jx
|
||||
@@ -1,6 +1,5 @@
|
||||
[gd_scene load_steps=17 format=3 uid="uid://lwmw4egynmd1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b0wcp76bbl2jx" path="res://scenes/контроль/контроль.gd" id="1_x5d6w"]
|
||||
[ext_resource type="Texture2D" uid="uid://bar8k5qef7kch" path="res://data/УФ.png" id="2_0nvm1"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb80aigvv648i" path="res://data/кнопка-внешние-0.png" id="2_oysma"]
|
||||
[ext_resource type="Script" uid="uid://bj4nndrurbunl" path="res://scenes/контроль/кнопка-прибора.gd" id="3_4pt7j"]
|
||||
@@ -16,6 +15,90 @@
|
||||
[ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="9_ll0vs"]
|
||||
[ext_resource type="Script" uid="uid://bncy1x53jp73d" path="res://scenes/контроль/connect_pribor.gd" id="11_u7tym"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_iqgf5"]
|
||||
script/source = "extends Panel
|
||||
|
||||
\"\"\"
|
||||
Режим контроль
|
||||
\"\"\"
|
||||
#TODO: рефактор: заменить подчёркивание на тире
|
||||
const PRIBORS_RES = \\
|
||||
{
|
||||
'externals': ['res://scenes/pribor-externals/externals.tscn', 'Контроль подключения внешних систем'],
|
||||
'pribor_prd_k_1': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 1'],
|
||||
'pribor_prd_k_2': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 2'],
|
||||
'pribor_prd_k_3': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 3'],
|
||||
'pribor_prd_k_4': ['res://scenes/pribor-prd-k/pribor-prd-k.tscn', 'Контроль исправности прибора ПРД-К 4'],
|
||||
'pribor_prd_n_1': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 1'],
|
||||
'pribor_prd_n_2': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 2'],
|
||||
'pribor_prd_n_3': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 3'],
|
||||
'pribor_prd_n_4': ['res://scenes/pribor-prd-n/pribor-prd-n.tscn', 'Контроль исправности прибора ПРД-Н 4'],
|
||||
'pribor_prd_v_1': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 1'],
|
||||
'pribor_prd_v_2': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 2'],
|
||||
'pribor_prd_v_3': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 3'],
|
||||
'pribor_prd_v_4': ['res://scenes/pribor-prd-v/pribor-prd-v.tscn', 'Контроль исправности прибора ПРД-В 4'],
|
||||
'pribor_rtr': ['res://scenes/pribor-afsp/pribor-bpo.tscn', 'Контроль исправности прибора РТР'],
|
||||
'pribor_afsp_1': ['res://scenes/pribor-afsp/pribor-afsp-1.tscn', 'Контроль исправности прибора АФСП 1'],
|
||||
'pribor_afsp_2': ['res://scenes/pribor-afsp/pribor-afsp-2.tscn', 'Контроль исправности прибора АФСП 2'],
|
||||
'pribor_uf': ['res://scenes/pribor-uf/pribor-uf.tscn', 'Контроль исправности прибора УФ'],
|
||||
'pribor_uyep': ['res://scenes/pribor-uyep/pribor-uyep.tscn', 'Контроль исправности устройства У-ЭП'],
|
||||
}
|
||||
|
||||
|
||||
func on_line_changed(u, conn_node, _pribor_meta): conn_node.set_val(u.online)
|
||||
|
||||
|
||||
func _ready():
|
||||
var group = ButtonGroup.new()
|
||||
for k in PRIBORS_RES:
|
||||
var pribor_node = get_node(k)
|
||||
var pribor_path = PRIBORS_RES[k][0]
|
||||
var header_text = PRIBORS_RES[k][1]
|
||||
pribor_node.set_button_group(group)
|
||||
pribor_node.connect('button_down', Callable(self, 'on_pribor_press').bind(pribor_path, header_text, pribor_node))
|
||||
var conn_node = pribor_node.get_node('connect_pribor')
|
||||
var pribor_meta = pribor_node.get_meta('unit_name', [])
|
||||
var pribor_proc = pribor_node.get_meta('online_proc', '')
|
||||
if pribor_proc == '':
|
||||
continue
|
||||
if pribor_meta.size():
|
||||
for i in pribor_meta.size():
|
||||
var unit_pribor = network.get_unit_instance(pribor_meta[i])
|
||||
unit_pribor.connect('line_changed', Callable(self, pribor_proc).bind(conn_node, pribor_meta))
|
||||
|
||||
|
||||
func online_change_arr(_u, conn_node, pribor_meta):
|
||||
var state_online = true
|
||||
for i in pribor_meta.size():
|
||||
var unit_pribor = network.get_unit_instance(pribor_meta[i])
|
||||
if not unit_pribor.online:
|
||||
state_online = false
|
||||
break
|
||||
conn_node.set_val(state_online)
|
||||
|
||||
|
||||
func on_pribor_press(pribor_path, header_text, pribor_node):
|
||||
var items = get_tree().get_nodes_in_group('pribor_items')
|
||||
for item in items:
|
||||
remove_child(item)
|
||||
item.queue_free()
|
||||
var pribor_obj = load(pribor_path)
|
||||
if not pribor_obj:
|
||||
push_error('не загружено: \\\"%s\\\" (%s)' % [pribor_path, header_text])
|
||||
return
|
||||
var pribor = pribor_obj.instantiate()
|
||||
if not pribor:
|
||||
push_error('экземпляр не создан: \\\"%s\\\" (%s)' % [pribor_path, header_text])
|
||||
return
|
||||
$lbl_header.text = header_text
|
||||
var meta_list = pribor_node.get_meta_list()
|
||||
if meta_list.find('unit_name') > -1:
|
||||
var unit_name = pribor_node.get_meta('unit_name')
|
||||
pribor.set_meta('unit_name', unit_name)
|
||||
pribor.add_to_group('pribor_items')
|
||||
add_child(pribor)
|
||||
"
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_foasq"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
@@ -36,7 +119,7 @@ anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_x5d6w")
|
||||
script = SubResource("GDScript_iqgf5")
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="externals" type="TextureButton" parent="." groups=["pribor_buttons"]]
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
extends Control
|
||||
|
||||
@export var textures: Array
|
||||
@export var unit_name: String = ''
|
||||
|
||||
|
||||
enum STATE_VAL {
|
||||
NONE = 0,
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
|
||||
|
||||
signal pressed(control: PanelContainer)
|
||||
|
||||
|
||||
func _on_button_pressed():
|
||||
emit_signal('pressed', self)
|
||||
|
||||
|
||||
@export var state: int:
|
||||
set(v):
|
||||
state = tools.clip_value(v, 0, textures.size() - 1)
|
||||
if is_inside_tree():
|
||||
$margin/vbox/grid/state.texture = textures[v]
|
||||
|
||||
|
||||
@export var fname: String:
|
||||
set(v):
|
||||
fname = v
|
||||
if is_inside_tree():
|
||||
$margin/vbox/grid/fname.text = v
|
||||
|
||||
|
||||
@export var rname: String:
|
||||
set(v):
|
||||
rname = v
|
||||
if is_inside_tree():
|
||||
$margin/vbox/grid/rname.text = v
|
||||
|
||||
|
||||
@export var alignment: int:
|
||||
set(v):
|
||||
if is_inside_tree():
|
||||
$margin/vbox.alignment = v
|
||||
|
||||
|
||||
func _ready() -> void: call_deferred('_on_resized')
|
||||
|
||||
|
||||
func _on_resized() -> void:
|
||||
$rect.size = size
|
||||
$margin.size = size
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
if Engine.is_editor_hint(): return
|
||||
var unit_any = network.get_unit_instance(unit_name)
|
||||
unit_any.connect('data_received', Callable(self, 'on_data_received'))
|
||||
unit_any.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
$margin/vbox.alignment = alignment
|
||||
$margin/vbox/grid/fname.text = fname
|
||||
$margin/vbox/grid/rname.text = rname
|
||||
$margin/vbox/grid/state.texture = textures[state]
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
if Engine.is_editor_hint(): return
|
||||
var unit_any = network.get_unit_instance(unit_name)
|
||||
unit_any.disconnect('data_received', Callable(self, 'on_data_received'))
|
||||
unit_any.disconnect('line_changed', Callable(self, 'on_line_changed'))
|
||||
@@ -1 +0,0 @@
|
||||
uid://cwurf51vh7ylm
|
||||
@@ -1,11 +1,83 @@
|
||||
[gd_scene load_steps=12 format=3 uid="uid://btpc78gucr57f"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cwurf51vh7ylm" path="res://scenes/контроль/элемент-я.gd" id="1_fwxi0"]
|
||||
[ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="3_dktys"]
|
||||
[ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="3_t4y6r"]
|
||||
[ext_resource type="Texture2D" uid="uid://c6booa8753u5t" path="res://data/состояние-исправности-2.png" id="4_bdhnj"]
|
||||
[ext_resource type="Texture2D" uid="uid://c4mdrmk7h638f" path="res://data/nine-patch-round.png" id="4_or1kj"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_rmhe2"]
|
||||
script/source = "extends Control
|
||||
|
||||
@export var textures: Array
|
||||
@export var unit_name: String = ''
|
||||
|
||||
|
||||
enum STATE_VAL {
|
||||
NONE = 0,
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
|
||||
|
||||
signal pressed(control: PanelContainer)
|
||||
|
||||
|
||||
func _on_button_pressed():
|
||||
emit_signal('pressed', self)
|
||||
|
||||
|
||||
@export var state: int:
|
||||
set(v):
|
||||
state = tools.clip_value(v, 0, textures.size() - 1)
|
||||
if is_inside_tree():
|
||||
$margin/vbox/grid/state.texture = textures[v]
|
||||
|
||||
|
||||
@export var fname: String:
|
||||
set(v):
|
||||
fname = v
|
||||
if is_inside_tree():
|
||||
$margin/vbox/grid/fname.text = v
|
||||
|
||||
|
||||
@export var rname: String:
|
||||
set(v):
|
||||
rname = v
|
||||
if is_inside_tree():
|
||||
$margin/vbox/grid/rname.text = v
|
||||
|
||||
|
||||
@export var alignment: int:
|
||||
set(v):
|
||||
if is_inside_tree():
|
||||
$margin/vbox.alignment = v
|
||||
|
||||
|
||||
func _ready() -> void: call_deferred('_on_resized')
|
||||
|
||||
|
||||
func _on_resized() -> void:
|
||||
$rect.size = size
|
||||
$margin.size = size
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
if Engine.is_editor_hint(): return
|
||||
var unit_any = network.get_unit_instance(unit_name)
|
||||
unit_any.connect('data_received', Callable(self, 'on_data_received'))
|
||||
unit_any.connect('line_changed', Callable(self, 'on_line_changed'))
|
||||
$margin/vbox.alignment = alignment
|
||||
$margin/vbox/grid/fname.text = fname
|
||||
$margin/vbox/grid/rname.text = rname
|
||||
$margin/vbox/grid/state.texture = textures[state]
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
if Engine.is_editor_hint(): return
|
||||
var unit_any = network.get_unit_instance(unit_name)
|
||||
unit_any.disconnect('data_received', Callable(self, 'on_data_received'))
|
||||
unit_any.disconnect('line_changed', Callable(self, 'on_line_changed'))
|
||||
"
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_45hqb"]
|
||||
script/source = "@tool
|
||||
|
||||
@@ -48,7 +120,7 @@ layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_right = 180.0
|
||||
offset_bottom = 155.0
|
||||
script = ExtResource("1_fwxi0")
|
||||
script = SubResource("GDScript_rmhe2")
|
||||
textures = [ExtResource("3_dktys"), ExtResource("3_t4y6r"), ExtResource("4_bdhnj")]
|
||||
|
||||
[node name="rect" type="NinePatchRect" parent="."]
|
||||
|
||||
Reference in New Issue
Block a user