From 2a090d02a30029661f1d95938bf7d16664389e8c Mon Sep 17 00:00:00 2001
From: TotMaxim
Date: Thu, 27 Nov 2025 21:47:12 +0300
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=BA=D0=B0=20=D0=AD=D0=9C=D0=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/default_data.json | 2 +-
main.gd | 70 ++++++---
main.tscn | 278 +++++++++++++++++++++------------
project.godot | 4 +-
socket_status.gd | 21 +++
socket_status.gd.uid | 1 +
socket_status.tscn | 46 ++++++
udp_broadcast.gd | 28 +++-
емс_г.gd | 92 +++++++++++
емс_г.gd.uid | 1 +
емс_г.tscn | 310 +++++++++++++++++++++++++++++++++++++
эмс-бланк-перем.png | Bin 0 -> 704 bytes
эмс-бланк-перем.png.import | 34 ++++
эмс-бланк-пост.png | Bin 0 -> 483 bytes
эмс-бланк-пост.png.import | 34 ++++
эмс-бланк.png | Bin 0 -> 787 bytes
эмс-бланк.png.import | 34 ++++
17 files changed, 820 insertions(+), 135 deletions(-)
create mode 100644 socket_status.gd
create mode 100644 socket_status.gd.uid
create mode 100644 socket_status.tscn
create mode 100644 емс_г.gd
create mode 100644 емс_г.gd.uid
create mode 100644 емс_г.tscn
create mode 100755 эмс-бланк-перем.png
create mode 100644 эмс-бланк-перем.png.import
create mode 100755 эмс-бланк-пост.png
create mode 100644 эмс-бланк-пост.png.import
create mode 100755 эмс-бланк.png
create mode 100644 эмс-бланк.png.import
diff --git a/config/default_data.json b/config/default_data.json
index dc27564..d6fe700 100644
--- a/config/default_data.json
+++ b/config/default_data.json
@@ -3,7 +3,7 @@
"ПРД-Н1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
"power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011],
- "sockets": [false, false, false, false, false],
+ "sockets": [true, true, true, true, true],
"dkm": [false, false, false, false, false, false, false],
"dou2": [false, false, false, false, false, false, false],
"dou3": [false, false, false, false, false, false, false],
diff --git a/main.gd b/main.gd
index c9a4811..d912b17 100644
--- a/main.gd
+++ b/main.gd
@@ -7,6 +7,7 @@ var default_data: Dictionary = {}
var dictionary_yau07: Dictionary
var dictionary_sockets_bit: Dictionary ## Байт 8 для отправки о состоянии ячеек
+
func _load_default_data():
var file = FileAccess.open(CONFIG_PATH, FileAccess.READ)
if file:
@@ -32,7 +33,7 @@ func _apply_default_data():
# Заполняем поля температур
-func _fill_ukp_fields(prd_node: Control, device_data: Dictionary):
+func _fill_ukp_fields(prd_node: Control, device_data: Dictionary) -> void:
var device_name = prd_node.get_meta('yau07')
# Заполняем поля температур
@@ -94,7 +95,8 @@ func _fill_ukp_fields(prd_node: Control, device_data: Dictionary):
var ip_fields = _get_ukp_nodes_for_device(device_name, [prd_node], "ip")
for i in range(min(ip_fields.size(), device_data["ip"].size())):
# Для IP используется инверсия: true в JSON = нажато = бит 0
- ip_fields[i].set_pressed_no_signal(device_data["ip"][i])
+ var is_pressed = not device_data["ip"][i]
+ ip_fields[i].set_pressed_no_signal(is_pressed)
func _ready() -> void:
@@ -141,6 +143,11 @@ func _ready() -> void:
var ip_arr_node: Array = get_tree().get_nodes_in_group('ip')
for ip in ip_arr_node:
ip.connect('toggled', _on_modify_ip.bind(ip.get_meta('bit'), ip.get_meta('device')))
+
+ var ems_arr_node: Array = get_tree().get_nodes_in_group('ems_g')
+ for ems in ems_arr_node:
+ ems.connect('bits_changed', _on_modify_ems_g_status.bind(ems.get_meta('device')))
+
_update_tab_container()
_load_default_data()
_apply_default_data()
@@ -166,6 +173,15 @@ func on_modify_device(toggled: bool, name_device: String) -> void:
print("Устройство %s активировано" % name_device)
dictionary_yau07[name_device].connect('update_isa_ports', _on_update_isa_ports)
dictionary_yau07[name_device].connect('update_socket_status', _on_update_socket_status)
+ var device_data = default_data[name_device]
+ _on_ukp_submitted('', name_device)
+ dictionary_yau07[name_device].set
+ dictionary_yau07[name_device].status_manager.set_dou2_status(bool_array_to_number(device_data["dou2"]))
+ dictionary_yau07[name_device].status_manager.set_att2_status(bool_array_to_number(device_data["att2"]))
+ dictionary_yau07[name_device].status_manager.set_dou3_status(bool_array_to_number(device_data["dou3"]))
+ dictionary_yau07[name_device].status_manager.set_att3_status(bool_array_to_number(device_data["att3"]))
+ dictionary_yau07[name_device].set_ip_status(bool_array_to_number(device_data["ip"]))
+ dictionary_yau07[name_device].set_sockets_status(bool_array_to_number(device_data["sockets"]))
else:
if dictionary_yau07.has(name_device) and dictionary_yau07[name_device]:
dictionary_yau07[name_device].close_udp_unit()
@@ -209,7 +225,7 @@ func _on_update_socket_status(status: int, device_name: String)->void:
var bit_index = socket.get_meta('bit')
var is_bit_set = (status >> bit_index) & 1
socket.set_pressed_no_signal(is_bit_set == 1)
-
+
func _on_update_isa_ports(isa_ports: Dictionary, device_name: String)->void:
for port_addr in isa_ports:
@@ -271,7 +287,7 @@ func _on_modify_sockets(toggled: bool, bit: int, device: String)->void:
var current_status = udp_unit.get_sockets_status() # Используем геттер
var new_status = _set_bit(current_status, bit, toggled)
udp_unit.set_sockets_status(new_status) # Используем сеттер
- print("Статус сокетов устройства %s обновлен: 0x%04X" % [device, new_status])
+ print("Статус сокетов устройства %s обновлен: 0x%02X" % [device, new_status])
## Функция для установки статусов ДКМ в ПРД
@@ -281,7 +297,14 @@ func _on_modify_dkm(toggled: bool, bit: int, device: String)->void:
var current_status = udp_unit.get_dkm_status() # Используем геттер
var new_status = _set_bit(current_status, bit, toggled)
udp_unit.set_dkm_status(new_status) # Используем сеттер
- print("Статус DKM устройства %s обновлен: 0x%04X" % [device, new_status])
+ print("Статус DKM устройства %s обновлен: 0x%02X" % [device, new_status])
+
+
+func _on_modify_ems_g_status(input_impulse: int, input_const: int, output_impulse: int, output_const: int, device: String)->void:
+ if not dictionary_yau07.has(device):
+ return
+ var udp_unit = dictionary_yau07[device]
+ udp_unit.set_ems_g_status(input_impulse, input_const, output_impulse, output_const)
func _on_modify_status(toggled: bool, bit: int, device: String, status_type: String) -> void:
@@ -304,16 +327,11 @@ func _on_modify_status(toggled: bool, bit: int, device: String, status_type: Str
button.set_pressed_no_signal(false)
# Устанавливаем статус через менеджер
match status_type:
- "dou2":
- udp_unit.status_manager.set_dou2_status(bit)
- "att1":
- udp_unit.status_manager.set_att1_status(bit)
- "att2":
- udp_unit.status_manager.set_att2_status(bit)
- "dou3":
- udp_unit.status_manager.set_dou3_status(bit)
- "att3":
- udp_unit.status_manager.set_att3_status(bit)
+ "dou2": udp_unit.status_manager.set_dou2_status(bit)
+ "att1": udp_unit.status_manager.set_att1_status(bit)
+ "att2": udp_unit.status_manager.set_att2_status(bit)
+ "dou3": udp_unit.status_manager.set_dou3_status(bit)
+ "att3": udp_unit.status_manager.set_att3_status(bit)
func _on_modify_ip(toggled: bool, bit: int, device: String):
@@ -323,13 +341,11 @@ func _on_modify_ip(toggled: bool, bit: int, device: String):
# Инверсия: нажата = 0, отжата = 1
var bit_value = 0 if toggled else 1
var new_status
- if bit_value == 0:
- new_status = current_status & ~(1 << bit) # Устанавливаем бит в 0
- else:
- new_status = current_status | (1 << bit) # Устанавливаем бит в 1
-
+ if bit_value == 0: new_status = current_status & ~(1 << bit) # Устанавливаем бит в 0
+ else: new_status = current_status | (1 << bit) # Устанавливаем бит в 1
+
udp_unit.set_ip_status(new_status)
- print("Статус ИП устройства %s обновлен: 0x%04X" % [device, new_status])
+ print("Статус ИП устройства %s обновлен: 0x%02X" % [device, new_status])
## Функция для установки значений в ячейках УКП
@@ -449,7 +465,15 @@ static func _set_bit(bits: int, index: int, val: bool) -> int:
return bits | (1 << index) if val else bits & ~(1 << index)
-## Новый метод для работы с ISA портами
+static func bool_array_to_number(bool_array: Array)-> int:
+ var result: int = 0
+ for i in range(bool_array.size()):
+ if bool_array[i]:
+ result |= (1 << i)
+ return result
+
+
+## Метод для работы с ISA портами
func read_isa_ports(device: String, port_addresses: Array) -> Dictionary:
"""Чтение ISA портов указанного устройства"""
if dictionary_yau07.has(device):
@@ -459,7 +483,7 @@ func read_isa_ports(device: String, port_addresses: Array) -> Dictionary:
return {}
-## Новый метод для записи ISA портов
+## Метод для записи ISA портов
func write_isa_port(device: String, port_address: int, value: int) -> bool:
"""Запись значения в ISA порт указанного устройства"""
if dictionary_yau07.has(device):
diff --git a/main.tscn b/main.tscn
index 6cb9d9e..c414c0b 100644
--- a/main.tscn
+++ b/main.tscn
@@ -1,6 +1,7 @@
-[gd_scene load_steps=6 format=3 uid="uid://bxorauom63ib6"]
+[gd_scene load_steps=7 format=3 uid="uid://bxorauom63ib6"]
[ext_resource type="Script" uid="uid://d1qwoxkckvdbc" path="res://main.gd" id="1_ig7tw"]
+[ext_resource type="PackedScene" uid="uid://2rjgbflmbi7e" path="res://емс_г.tscn" id="2_0xm2m"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0xm2m"]
bg_color = Color(0.1167, 0.351514, 0.35159, 1)
@@ -24,8 +25,8 @@ script = ExtResource("1_ig7tw")
[node name="Panel" type="Panel" parent="."]
layout_mode = 0
-offset_right = 1541.0
-offset_bottom = 615.0
+offset_right = 1634.0
+offset_bottom = 885.0
[node name="Yau-07-addr" type="GridContainer" parent="."]
layout_mode = 0
@@ -33,73 +34,122 @@ offset_left = 32.0
offset_top = 24.0
offset_right = 140.0
offset_bottom = 440.0
+columns = 2
[node name="CheckButton" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-Н1"
metadata/device = "ПРД-Н1"
+[node name="Label" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.11"
+
[node name="CheckButton2" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-В1"
metadata/device = "ПРД-В1"
+[node name="Label2" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.12"
+
[node name="CheckButton3" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-К1"
metadata/device = "ПРД-К1"
+[node name="Label3" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.13"
+
[node name="CheckButton4" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-Н2"
metadata/device = "ПРД-Н2"
+[node name="Label4" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.21"
+
[node name="CheckButton5" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-В2"
metadata/device = "ПРД-В2"
+[node name="Label5" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.22"
+
[node name="CheckButton6" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-К2"
metadata/device = "ПРД-К2"
+[node name="Label6" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.23"
+
[node name="CheckButton7" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-Н3"
metadata/device = "ПРД-Н3"
+[node name="Label7" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.31"
+
[node name="CheckButton8" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-В3"
metadata/device = "ПРД-В3"
+[node name="Label8" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.32"
+
[node name="CheckButton9" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-К3"
metadata/device = "ПРД-К3"
+[node name="Label9" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.33"
+
[node name="CheckButton10" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-Н4"
metadata/device = "ПРД-Н4"
+[node name="Label10" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.41"
+
[node name="CheckButton11" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-В4"
metadata/device = "ПРД-В4"
+[node name="Label11" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.42"
+
[node name="CheckButton12" type="CheckButton" parent="Yau-07-addr" groups=["device-addr"]]
layout_mode = 2
text = "ПРД-К4"
metadata/device = "ПРД-К4"
+[node name="Label12" type="Label" parent="Yau-07-addr"]
+layout_mode = 2
+text = "10.1.1.43"
+
[node name="TabContainer" type="TabContainer" parent="."]
layout_mode = 0
-offset_left = 187.0
+offset_left = 237.0
offset_top = 19.0
-offset_right = 1373.0
-offset_bottom = 442.0
+offset_right = 1472.0
+offset_bottom = 752.0
current_tab = 2
use_hidden_tabs_for_min_size = true
tab_focus_mode = 0
@@ -113,8 +163,10 @@ metadata/yau07 = "ПРД-Н1"
[node name="sockets" type="GridContainer" parent="TabContainer/ПРД-Н1"]
layout_mode = 2
-offset_right = 140.0
-offset_bottom = 171.0
+offset_left = 19.0
+offset_top = 14.0
+offset_right = 159.0
+offset_bottom = 185.0
[node name="EMS_G" type="CheckBox" parent="TabContainer/ПРД-Н1/sockets" groups=["socket"]]
layout_mode = 2
@@ -146,442 +198,446 @@ text = "Загрузка ЭМС"
metadata/bit = 4
metadata/device = "ПРД-Н1"
-[node name="TabBar" type="TabContainer" parent="TabContainer/ПРД-Н1"]
+[node name="SocketsBar" type="TabContainer" parent="TabContainer/ПРД-Н1"]
layout_mode = 0
offset_left = 199.0
-offset_top = 9.0
-offset_right = 957.0
-offset_bottom = 334.0
+offset_right = 1234.0
+offset_bottom = 760.0
current_tab = 2
tabs_position = 1
tab_focus_mode = 0
-[node name="ukp_1" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar"]
+[node name="УКП-1" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar"]
visible = false
layout_mode = 2
columns = 7
metadata/_tab_index = 0
-[node name="Label" type="Label" parent="TabContainer/ПРД-Н1/TabBar/ukp_1"]
+[node name="Label" type="Label" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1"]
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_ig7tw")
text = "Температуры"
horizontal_alignment = 1
-[node name="TextEdit" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["temperature_ukp"]]
+[node name="TextEdit" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit2" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["temperature_ukp"]]
+[node name="TextEdit2" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit3" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["temperature_ukp"]]
+[node name="TextEdit3" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit4" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["temperature_ukp"]]
+[node name="TextEdit4" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit5" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["temperature_ukp"]]
+[node name="TextEdit5" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit6" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["temperature_ukp"]]
+[node name="TextEdit6" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="Label2" type="Label" parent="TabContainer/ПРД-Н1/TabBar/ukp_1"]
+[node name="Label2" type="Label" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1"]
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_ig7tw")
text = "Мощность"
horizontal_alignment = 1
-[node name="TextEdit7" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["power_ukp"]]
+[node name="TextEdit7" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit8" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["power_ukp"]]
+[node name="TextEdit8" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit9" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["power_ukp"]]
+[node name="TextEdit9" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit10" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["power_ukp"]]
+[node name="TextEdit10" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit11" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["power_ukp"]]
+[node name="TextEdit11" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit12" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_1" groups=["power_ukp"]]
+[node name="TextEdit12" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-1" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="ukp_2" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar"]
+[node name="УКП-2" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar"]
visible = false
layout_mode = 2
columns = 7
metadata/_tab_index = 1
-[node name="Label" type="Label" parent="TabContainer/ПРД-Н1/TabBar/ukp_2"]
+[node name="Label" type="Label" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2"]
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_ig7tw")
text = "Температуры"
horizontal_alignment = 1
-[node name="TextEdit" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["temperature_ukp"]]
+[node name="TextEdit" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit2" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["temperature_ukp"]]
+[node name="TextEdit2" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit3" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["temperature_ukp"]]
+[node name="TextEdit3" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit4" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["temperature_ukp"]]
+[node name="TextEdit4" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit5" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["temperature_ukp"]]
+[node name="TextEdit5" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit6" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["temperature_ukp"]]
+[node name="TextEdit6" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["temperature_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="Label2" type="Label" parent="TabContainer/ПРД-Н1/TabBar/ukp_2"]
+[node name="Label2" type="Label" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2"]
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_ig7tw")
text = "Мощность"
horizontal_alignment = 1
-[node name="TextEdit7" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["power_ukp"]]
+[node name="TextEdit7" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit8" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["power_ukp"]]
+[node name="TextEdit8" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit9" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["power_ukp"]]
+[node name="TextEdit9" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit10" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["power_ukp"]]
+[node name="TextEdit10" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit11" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["power_ukp"]]
+[node name="TextEdit11" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="TextEdit12" type="LineEdit" parent="TabContainer/ПРД-Н1/TabBar/ukp_2" groups=["power_ukp"]]
+[node name="TextEdit12" type="LineEdit" parent="TabContainer/ПРД-Н1/SocketsBar/УКП-2" groups=["power_ukp"]]
custom_minimum_size = Vector2(100, 35)
layout_mode = 2
placeholder_text = "0"
metadata/device = "ПРД-Н1"
-[node name="ug" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar"]
+[node name="УГ" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar"]
layout_mode = 2
columns = 5
metadata/_tab_index = 2
-[node name="GridContainer4" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar/ug"]
+[node name="GridContainer4" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar/УГ"]
layout_mode = 2
-[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer4" groups=["dou2"]]
+[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer4" groups=["dou2"]]
layout_mode = 2
text = "ЛУЧ -5°"
metadata/bit = 0
metadata/device = "ПРД-Н1"
-[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer4" groups=["dou2"]]
+[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer4" groups=["dou2"]]
layout_mode = 2
text = "ЛУЧ 5°"
metadata/bit = 1
metadata/device = "ПРД-Н1"
-[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer4" groups=["dou2"]]
+[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer4" groups=["dou2"]]
layout_mode = 2
text = "ЛУЧ 15°"
metadata/bit = 2
metadata/device = "ПРД-Н1"
-[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer4" groups=["dou2"]]
+[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer4" groups=["dou2"]]
layout_mode = 2
text = "ЛУЧ 25°"
metadata/bit = 3
metadata/device = "ПРД-Н1"
-[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer4" groups=["dou2"]]
+[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer4" groups=["dou2"]]
layout_mode = 2
text = "ЛУЧ 35°"
metadata/bit = 4
metadata/device = "ПРД-Н1"
-[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer4" groups=["dou2"]]
+[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer4" groups=["dou2"]]
layout_mode = 2
text = "ЛУЧ 45°"
metadata/bit = 5
metadata/device = "ПРД-Н1"
-[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer4" groups=["dou2"]]
+[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer4" groups=["dou2"]]
layout_mode = 2
text = "ЛУЧ КОНТРОЛЬ"
metadata/bit = 6
metadata/device = "ПРД-Н1"
-[node name="GridContainer" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar/ug"]
+[node name="GridContainer" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar/УГ"]
layout_mode = 2
-[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer" groups=["dou3"]]
+[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer" groups=["dou3"]]
layout_mode = 2
text = "ЛУЧ -5°"
metadata/bit = 0
metadata/device = "ПРД-Н1"
-[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer" groups=["dou3"]]
+[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer" groups=["dou3"]]
layout_mode = 2
text = "ЛУЧ 5°"
metadata/bit = 1
metadata/device = "ПРД-Н1"
-[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer" groups=["dou3"]]
+[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer" groups=["dou3"]]
layout_mode = 2
text = "ЛУЧ 15°"
metadata/bit = 2
metadata/device = "ПРД-Н1"
-[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer" groups=["dou3"]]
+[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer" groups=["dou3"]]
layout_mode = 2
text = "ЛУЧ 25°"
metadata/bit = 3
metadata/device = "ПРД-Н1"
-[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer" groups=["dou3"]]
+[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer" groups=["dou3"]]
layout_mode = 2
text = "ЛУЧ 35°"
metadata/bit = 4
metadata/device = "ПРД-Н1"
-[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer" groups=["dou3"]]
+[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer" groups=["dou3"]]
layout_mode = 2
text = "ЛУЧ 45°"
metadata/bit = 5
metadata/device = "ПРД-Н1"
-[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer" groups=["dou3"]]
+[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer" groups=["dou3"]]
layout_mode = 2
text = "ЛУЧ КОНТРОЛЬ"
metadata/bit = 6
metadata/device = "ПРД-Н1"
-[node name="GridContainer2" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar/ug"]
+[node name="GridContainer2" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar/УГ"]
layout_mode = 2
-[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 0 dB"
metadata/device = "ПРД-Н1"
metadata/bit = 0
-[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 0.5 dB"
metadata/bit = 1
metadata/device = "ПРД-Н1"
-[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 2 dB"
metadata/bit = 2
metadata/device = "ПРД-Н1"
-[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 2.5 dB"
metadata/bit = 3
metadata/device = "ПРД-Н1"
-[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 8 dB"
metadata/bit = 4
metadata/device = "ПРД-Н1"
-[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 8.5 dB"
metadata/bit = 5
metadata/device = "ПРД-Н1"
-[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 10 dB"
metadata/bit = 6
metadata/device = "ПРД-Н1"
-[node name="CheckBox8" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer2" groups=["att2"]]
+[node name="CheckBox8" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer2" groups=["att2"]]
layout_mode = 2
text = "АТТ 10.5 dB"
metadata/bit = 7
metadata/device = "ПРД-Н1"
-[node name="GridContainer5" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar/ug"]
+[node name="GridContainer5" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar/УГ"]
layout_mode = 2
-[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 0 dB"
metadata/bit = 0
metadata/device = "ПРД-Н1"
-[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 0.5 dB"
metadata/bit = 1
metadata/device = "ПРД-Н1"
-[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 2 dB"
metadata/bit = 2
metadata/device = "ПРД-Н1"
-[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 2.5 dB"
metadata/bit = 3
metadata/device = "ПРД-Н1"
-[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 8 dB"
metadata/bit = 4
metadata/device = "ПРД-Н1"
-[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 8.5 dB"
metadata/bit = 5
metadata/device = "ПРД-Н1"
-[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox7" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 10 dB"
metadata/bit = 6
metadata/device = "ПРД-Н1"
-[node name="CheckBox8" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer5" groups=["att3"]]
+[node name="CheckBox8" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer5" groups=["att3"]]
layout_mode = 2
text = "АТТ 10.5 dB"
metadata/bit = 7
metadata/device = "ПРД-Н1"
-[node name="GridContainer3" type="GridContainer" parent="TabContainer/ПРД-Н1/TabBar/ug"]
+[node name="GridContainer3" type="GridContainer" parent="TabContainer/ПРД-Н1/SocketsBar/УГ"]
layout_mode = 2
-[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer3" groups=["ip"]]
+[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer3" groups=["ip"]]
layout_mode = 2
text = "МАА №1"
metadata/bit = 0
metadata/device = "ПРД-Н1"
-[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer3" groups=["ip"]]
+[node name="CheckBox2" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer3" groups=["ip"]]
layout_mode = 2
text = "МАА №2"
metadata/bit = 1
metadata/device = "ПРД-Н1"
-[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer3" groups=["ip"]]
+[node name="CheckBox3" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer3" groups=["ip"]]
layout_mode = 2
text = "ИП9-50 №1"
metadata/bit = 2
metadata/device = "ПРД-Н1"
-[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer3" groups=["ip"]]
+[node name="CheckBox4" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer3" groups=["ip"]]
layout_mode = 2
text = "ИП9-50 №2"
metadata/bit = 3
metadata/device = "ПРД-Н1"
-[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer3" groups=["ip"]]
+[node name="CheckBox5" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer3" groups=["ip"]]
layout_mode = 2
text = "ИП12-50 №1"
metadata/bit = 4
metadata/device = "ПРД-Н1"
-[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/TabBar/ug/GridContainer3" groups=["ip"]]
+[node name="CheckBox6" type="CheckBox" parent="TabContainer/ПРД-Н1/SocketsBar/УГ/GridContainer3" groups=["ip"]]
layout_mode = 2
text = "ИП5-25"
metadata/bit = 7
metadata/device = "ПРД-Н1"
+[node name="ЕМС-Г" parent="TabContainer/ПРД-Н1/SocketsBar" groups=["ems_g"] instance=ExtResource("2_0xm2m")]
+visible = false
+layout_mode = 2
+metadata/device = "ПРД-Н1"
+
[node name="dkm" type="GridContainer" parent="TabContainer/ПРД-Н1"]
layout_mode = 0
-offset_left = 10.0
-offset_top = 201.0
-offset_right = 50.0
-offset_bottom = 241.0
+offset_left = 19.0
+offset_top = 206.0
+offset_right = 97.0
+offset_bottom = 272.0
[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-Н1/dkm" groups=["dkm"]]
layout_mode = 2
@@ -604,6 +660,10 @@ metadata/yau07 = "ПРД-В1"
[node name="sockets" type="GridContainer" parent="TabContainer/ПРД-В1"]
layout_mode = 2
+offset_left = 19.0
+offset_top = 14.0
+offset_right = 159.0
+offset_bottom = 185.0
[node name="EMS_G" type="CheckBox" parent="TabContainer/ПРД-В1/sockets" groups=["socket"]]
layout_mode = 2
@@ -638,9 +698,8 @@ metadata/device = "ПРД-В1"
[node name="TabBar" type="TabContainer" parent="TabContainer/ПРД-В1"]
layout_mode = 0
offset_left = 199.0
-offset_top = 9.0
-offset_right = 970.0
-offset_bottom = 370.0
+offset_right = 1235.0
+offset_bottom = 733.0
current_tab = 2
tabs_position = 1
tab_focus_mode = 0
@@ -1100,12 +1159,17 @@ text = "ИП5-25"
metadata/bit = 7
metadata/device = "ПРД-В1"
+[node name="ЕМС-Г" parent="TabContainer/ПРД-В1/TabBar" groups=["ems_g"] instance=ExtResource("2_0xm2m")]
+visible = false
+layout_mode = 2
+metadata/device = "ПРД-В1"
+
[node name="dkm" type="GridContainer" parent="TabContainer/ПРД-В1"]
layout_mode = 0
-offset_left = 10.0
-offset_top = 201.0
-offset_right = 50.0
-offset_bottom = 241.0
+offset_left = 19.0
+offset_top = 206.0
+offset_right = 97.0
+offset_bottom = 272.0
[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-В1/dkm" groups=["dkm"]]
layout_mode = 2
@@ -1127,6 +1191,10 @@ metadata/yau07 = "ПРД-К1"
[node name="sockets" type="GridContainer" parent="TabContainer/ПРД-К1"]
layout_mode = 2
+offset_left = 19.0
+offset_top = 14.0
+offset_right = 159.0
+offset_bottom = 185.0
[node name="EMS_G" type="CheckBox" parent="TabContainer/ПРД-К1/sockets" groups=["socket"]]
layout_mode = 2
@@ -1162,9 +1230,9 @@ metadata/device = "ПРД-К1"
layout_direction = 2
layout_mode = 0
offset_left = 170.0
-offset_top = 9.0
-offset_right = 1144.0
-offset_bottom = 370.0
+offset_top = 1.0
+offset_right = 1235.0
+offset_bottom = 734.0
current_tab = 3
tabs_position = 1
tab_focus_mode = 0
@@ -1729,12 +1797,18 @@ text = "ИП5-25"
metadata/bit = 7
metadata/device = "ПРД-К1"
+[node name="ЕМС-Г" parent="TabContainer/ПРД-К1/TabBar" groups=["ems_g"] instance=ExtResource("2_0xm2m")]
+visible = false
+layout_mode = 2
+metadata/_tab_index = 4
+metadata/device = "ПРД-В1"
+
[node name="dkm" type="GridContainer" parent="TabContainer/ПРД-К1"]
layout_mode = 0
-offset_left = 10.0
-offset_top = 201.0
-offset_right = 50.0
-offset_bottom = 241.0
+offset_left = 19.0
+offset_top = 206.0
+offset_right = 97.0
+offset_bottom = 307.0
[node name="CheckBox" type="CheckBox" parent="TabContainer/ПРД-К1/dkm" groups=["dkm"]]
layout_mode = 2
diff --git a/project.godot b/project.godot
index d78b36e..8b70b14 100644
--- a/project.godot
+++ b/project.godot
@@ -17,8 +17,8 @@ config/icon="res://icon.svg"
[display]
-window/size/viewport_width=1400
-window/size/viewport_height=600
+window/size/viewport_width=1500
+window/size/viewport_height=850
[rendering]
diff --git a/socket_status.gd b/socket_status.gd
new file mode 100644
index 0000000..2c05ebb
--- /dev/null
+++ b/socket_status.gd
@@ -0,0 +1,21 @@
+extends PanelContainer
+
+@onready var animated_sprite = $SZI_x
+signal update_frame(bit: int, frame: int)
+
+func _ready():
+ gui_input.connect(_on_gui_input)
+ mouse_filter = Control.MOUSE_FILTER_PASS
+
+func _on_gui_input(event):
+ if event is InputEventMouseButton:
+ if event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
+ _switch_frame()
+
+
+func _switch_frame():
+ var current_frame = animated_sprite.frame
+ var next_frame = (current_frame + 1) % 3
+ animated_sprite.frame = next_frame
+ emit_signal('update_frame', get_meta("bit"), next_frame)
+
diff --git a/socket_status.gd.uid b/socket_status.gd.uid
new file mode 100644
index 0000000..75d1786
--- /dev/null
+++ b/socket_status.gd.uid
@@ -0,0 +1 @@
+uid://bg8n8wt3kjqpm
diff --git a/socket_status.tscn b/socket_status.tscn
new file mode 100644
index 0000000..2fa2329
--- /dev/null
+++ b/socket_status.tscn
@@ -0,0 +1,46 @@
+[gd_scene load_steps=7 format=3 uid="uid://dn3jp4r8ij3rf"]
+
+[ext_resource type="Texture2D" uid="uid://cwabmu3cljbpr" path="res://эмс-бланк.png" id="1_bsrew"]
+[ext_resource type="Script" uid="uid://bg8n8wt3kjqpm" path="res://socket_status.gd" id="1_kydjn"]
+[ext_resource type="Texture2D" uid="uid://sx6xcpus2yf" path="res://эмс-бланк-пост.png" id="2_b2kjm"]
+[ext_resource type="Texture2D" uid="uid://snpqhalopnp" path="res://эмс-бланк-перем.png" id="3_odpjv"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q1ixs"]
+bg_color = Color(0, 0, 0, 0.490196)
+corner_radius_top_left = 5
+corner_radius_top_right = 5
+corner_radius_bottom_right = 5
+corner_radius_bottom_left = 5
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_a7q1i"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": ExtResource("1_bsrew")
+}, {
+"duration": 1.0,
+"texture": ExtResource("2_b2kjm")
+}, {
+"duration": 1.0,
+"texture": ExtResource("3_odpjv")
+}, {
+"duration": 1.0,
+"texture": null
+}],
+"loop": true,
+"name": &"default",
+"speed": 5.0
+}]
+
+[node name="PanelContainer" type="PanelContainer"]
+custom_minimum_size = Vector2(50, 35)
+offset_left = -3.0
+offset_right = 47.0
+offset_bottom = 35.0
+theme_override_styles/panel = SubResource("StyleBoxFlat_q1ixs")
+script = ExtResource("1_kydjn")
+
+[node name="SZI_x" type="AnimatedSprite2D" parent="."]
+position = Vector2(25, 17)
+scale = Vector2(1.2, 1.2)
+sprite_frames = SubResource("SpriteFrames_a7q1i")
diff --git a/udp_broadcast.gd b/udp_broadcast.gd
index 8bea1a2..1f8ad12 100644
--- a/udp_broadcast.gd
+++ b/udp_broadcast.gd
@@ -49,6 +49,10 @@ var _dkm_status_bit: int = 0
var _dry_contact_status_bit: int = 0xFF
var _cmd_number_count: int = 0
var _last_received_command: int = -1
+var _input_impulse: int = 0xffff
+var _input_const: int = 0xffff
+var _output_impulse: int = 0xffff
+var _output_const: int = 0xffff
var ukp0_data: PackedByteArray
var ukp1_data: PackedByteArray
@@ -198,6 +202,14 @@ func get_ip_status()->int:
return _dry_contact_status_bit
+func set_ems_g_status(in_imp: int, in_const: int, out_imp: int, out_const: int) -> void:
+ '''Установка статуса входов и выходов ЕМС-Г'''
+ _input_impulse = in_imp
+ _input_const = in_const
+ _output_impulse = out_imp
+ _output_const = out_const
+
+
func set_isa_port(port_addr: int, value: int) -> bool:
'''Установка значения ISA порта'''
if port_addr < 0 or port_addr > 0xFFFF:
@@ -343,13 +355,15 @@ func _encode_device_data(buffer: PackedByteArray) -> void:
func _encode_ems_g_data(buffer: PackedByteArray) -> void:
'''Кодирование данных EMS-G'''
- var ems_g_data = [
- 0x9e00, 0xffff, 0xffff, 0x0000, 0xffff, 0xffff, 0x0000,
- 0xffff, 0xffff, 0x0000, 0xffff, 0xffff, 0xffff
- ]
-
- for i in range(ems_g_data.size()):
- buffer.encode_u16(EMS_G_DATA_OFFSET + i * 2, ems_g_data[i])
+ #var ems_g_data = [
+ #0x9e00, 0xffff, 0xffff, 0x0000, 0xffff, 0xffff,
+ #0x0000, 0xffff, 0xffff, 0x0000, 0xffff, 0xffff,
+ #0xffff
+ #]
+ buffer.encode_u16(EMS_G_DATA_OFFSET, _input_const)
+ buffer.encode_u16(EMS_G_DATA_OFFSET + 6, _input_impulse)
+ buffer.encode_u16(EMS_G_DATA_OFFSET + 12, _output_const)
+ buffer.encode_u16(EMS_G_DATA_OFFSET + 18, _output_impulse)
func _encode_ug_data(buffer: PackedByteArray) -> void:
diff --git a/емс_г.gd b/емс_г.gd
new file mode 100644
index 0000000..bcc2a4e
--- /dev/null
+++ b/емс_г.gd
@@ -0,0 +1,92 @@
+extends Panel
+
+@onready var output_status = $output
+# Константы состояний фреймов
+const FRAME_OFF := 0
+const FRAME_CONST := 1
+const FRAME_IMPULSE := 2
+
+var _input_impulse: int = 0
+var _input_const: int = 0
+var _output_impulse: int = 0
+var _output_const: int = 0
+
+#region Сигналы для уведомления об изменениях
+signal input_bits_updated(input_impulse: int, input_const: int)
+signal output_bits_updated(output_impulse: int, output_const: int)
+signal bits_changed(input_impulse: int, input_const: int, output_impulse: int, output_const: int)
+#endregion
+
+func _ready():
+ _setup_connections()
+
+
+func _setup_connections():
+ var _input_nodes = get_tree().get_nodes_in_group('input')
+ var _output_nodes = get_tree().get_nodes_in_group('output')
+
+ for node in _input_nodes:
+ if node.has_signal('update_frame'):
+ node.update_frame.connect(on_update_frame_input)
+
+
+ for node in _output_nodes:
+ if node.has_signal('update_frame'):
+ node.update_frame.connect(on_update_frame_output)
+
+
+func on_update_frame_input(bit: int, frame: int)-> void:
+ var mask = 1 << bit
+ var old_impulse = _input_impulse
+ var old_const = _input_const
+ _input_impulse = _input_impulse & ~mask | (mask if frame == FRAME_IMPULSE else 0)
+ _input_const = _input_const & ~mask | (mask if frame == FRAME_CONST else 0)
+ # Отправляем сигналы только если значения изменились
+ if _input_impulse != old_impulse || _input_const != old_const:
+ input_bits_updated.emit(get_input_impulse(), get_input_const())
+ bits_changed.emit(get_input_impulse(), get_input_const(), get_output_impulse(), get_output_const())
+
+
+func on_update_frame_output(bit: int, frame: int)-> void:
+ var mask = 1 << bit
+ var old_impulse = _output_impulse
+ var old_const = _output_const
+ _output_impulse = _output_impulse & ~mask | (mask if frame == FRAME_IMPULSE else 0)
+ _output_const = _output_const & ~mask | (mask if frame == FRAME_CONST else 0)
+ # Отправляем сигналы только если значения изменились
+ if _output_impulse != old_impulse || _output_const != old_const:
+ output_bits_updated.emit(get_output_impulse(), get_output_const())
+ bits_changed.emit(get_input_impulse(), get_input_const(), get_output_impulse(), get_output_const())
+
+
+func _invert_bits(value: int) -> int:
+ """Инвертирует все биты (0 становится 0xFFFF, 0xFFFF становится 0)"""
+ return value ^ 0xFFFF
+
+
+#region Геттеры для безопасного доступа к данным
+func get_input_impulse() -> int:
+ return _input_impulse
+
+
+func get_input_const() -> int:
+ return _input_const
+
+
+func get_output_impulse() -> int:
+ return _output_impulse
+
+
+func get_output_const() -> int:
+ return _output_const
+#endregion
+
+#region Функция для получения всех данных сразу
+func get_all_bits() -> Dictionary:
+ return {
+ "input_impulse": _input_impulse,
+ "input_const": _input_const,
+ "output_impulse": _output_impulse,
+ "output_const": _output_const
+ }
+#endregion
diff --git a/емс_г.gd.uid b/емс_г.gd.uid
new file mode 100644
index 0000000..82813a4
--- /dev/null
+++ b/емс_г.gd.uid
@@ -0,0 +1 @@
+uid://d2fgin0bhm826
diff --git a/емс_г.tscn b/емс_г.tscn
new file mode 100644
index 0000000..14ae94f
--- /dev/null
+++ b/емс_г.tscn
@@ -0,0 +1,310 @@
+[gd_scene load_steps=4 format=3 uid="uid://2rjgbflmbi7e"]
+
+[ext_resource type="PackedScene" uid="uid://dn3jp4r8ij3rf" path="res://socket_status.tscn" id="1_deko5"]
+[ext_resource type="Script" uid="uid://d2fgin0bhm826" path="res://емс_г.gd" id="1_tk3ne"]
+
+[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_deko5"]
+
+[node name="ЕМС-Г" type="Panel"]
+offset_right = 789.0
+offset_bottom = 395.0
+theme_override_styles/panel = SubResource("StyleBoxTexture_deko5")
+script = ExtResource("1_tk3ne")
+metadata/_tab_index = 3
+
+[node name="output" type="GridContainer" parent="."]
+layout_mode = 2
+offset_left = 161.0
+offset_top = 15.0
+offset_right = 1021.0
+offset_bottom = 77.0
+columns = 16
+
+[node name="Label" type="Label" parent="output"]
+layout_mode = 2
+text = "СИ1"
+
+[node name="Label2" type="Label" parent="output"]
+layout_mode = 2
+text = "СИ2"
+
+[node name="Label3" type="Label" parent="output"]
+layout_mode = 2
+text = "СИ3"
+
+[node name="Label4" type="Label" parent="output"]
+layout_mode = 2
+text = "Мод1"
+
+[node name="Label5" type="Label" parent="output"]
+layout_mode = 2
+text = "Мод2"
+
+[node name="Label6" type="Label" parent="output"]
+layout_mode = 2
+text = "Мод3"
+
+[node name="Label7" type="Label" parent="output"]
+layout_mode = 2
+
+[node name="Label8" type="Label" parent="output"]
+layout_mode = 2
+
+[node name="Label9" type="Label" parent="output"]
+layout_mode = 2
+text = "ФГОЗ"
+
+[node name="Label10" type="Label" parent="output"]
+layout_mode = 2
+text = "ФГОЗ"
+
+[node name="Label11" type="Label" parent="output"]
+layout_mode = 2
+text = "МодМ"
+
+[node name="Label12" type="Label" parent="output"]
+layout_mode = 2
+
+[node name="Label13" type="Label" parent="output"]
+layout_mode = 2
+
+[node name="Label14" type="Label" parent="output"]
+layout_mode = 2
+
+[node name="Label15" type="Label" parent="output"]
+layout_mode = 2
+
+[node name="Label16" type="Label" parent="output"]
+layout_mode = 2
+
+[node name="PanelContainer0" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 0
+
+[node name="PanelContainer1" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 1
+
+[node name="PanelContainer2" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 2
+
+[node name="PanelContainer3" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 3
+
+[node name="PanelContainer4" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 4
+
+[node name="PanelContainer5" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 5
+
+[node name="PanelContainer6" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 6
+
+[node name="PanelContainer7" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 7
+
+[node name="PanelContainer8" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 8
+
+[node name="PanelContainer9" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 9
+
+[node name="PanelContainer10" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 10
+
+[node name="PanelContainer11" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 11
+
+[node name="PanelContainer12" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 12
+
+[node name="PanelContainer13" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 13
+
+[node name="PanelContainer14" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 14
+
+[node name="PanelContainer15" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 15
+
+[node name="input" type="GridContainer" parent="."]
+layout_mode = 2
+offset_left = 9.0
+offset_top = 83.0
+offset_right = 155.0
+offset_bottom = 703.0
+columns = 2
+
+[node name="Label" type="Label" parent="input"]
+layout_mode = 2
+text = "СЗИ1 от УФ"
+
+[node name="PanelContainer0" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 0
+
+[node name="Label2" type="Label" parent="input"]
+layout_mode = 2
+text = "СЗИ2 от УФ"
+
+[node name="PanelContainer1" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 1
+
+[node name="Label3" type="Label" parent="input"]
+layout_mode = 2
+text = "СЗИ3 от УФ"
+
+[node name="PanelContainer2" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 2
+
+[node name="Label4" type="Label" parent="input"]
+layout_mode = 2
+text = "СЗИ4 от УФ"
+
+[node name="PanelContainer3" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 3
+
+[node name="Label5" type="Label" parent="input"]
+layout_mode = 2
+text = "СЗИ5 от УФ"
+
+[node name="PanelContainer4" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 4
+
+[node name="Label6" type="Label" parent="input"]
+layout_mode = 2
+text = "СЗИ6 от УФ"
+
+[node name="PanelContainer5" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 5
+
+[node name="Label7" type="Label" parent="input"]
+layout_mode = 2
+text = "СЗИ7 от УФ"
+
+[node name="PanelContainer6" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 6
+
+[node name="Label8" type="Label" parent="input"]
+layout_mode = 2
+text = "Х"
+
+[node name="PanelContainer7" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 7
+
+[node name="Label9" type="Label" parent="input"]
+layout_mode = 2
+text = "СИ1 от ФС"
+
+[node name="PanelContainer8" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 8
+
+[node name="Label10" type="Label" parent="input"]
+layout_mode = 2
+text = "СИ2 от ФС"
+
+[node name="PanelContainer9" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 9
+
+[node name="Label11" type="Label" parent="input"]
+layout_mode = 2
+text = "СИ3 от ФС"
+
+[node name="PanelContainer10" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 10
+
+[node name="Label12" type="Label" parent="input"]
+layout_mode = 2
+text = "СИ4 от ФС"
+
+[node name="PanelContainer11" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 11
+
+[node name="Label13" type="Label" parent="input"]
+layout_mode = 2
+text = "СИ5 от ФС"
+
+[node name="PanelContainer12" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 12
+
+[node name="Label14" type="Label" parent="input"]
+layout_mode = 2
+text = "СИ6 от ФС"
+
+[node name="PanelContainer13" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 13
+
+[node name="Label15" type="Label" parent="input"]
+layout_mode = 2
+text = "СИ7 от ФС"
+
+[node name="PanelContainer14" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 14
+
+[node name="Label16" type="Label" parent="input"]
+layout_mode = 2
+text = "Х"
+
+[node name="PanelContainer15" parent="input" groups=["input"] instance=ExtResource("1_deko5")]
+layout_mode = 2
+mouse_default_cursor_shape = 2
+metadata/bit = 15
diff --git a/эмс-бланк-перем.png b/эмс-бланк-перем.png
new file mode 100755
index 0000000000000000000000000000000000000000..832a346c43b74227b515c53c9cf68391fef00acd
GIT binary patch
literal 704
zcmV;x0zdtUP);Yay;z%HDV_MxwdqyYuaC97&gb>E50I7xfjTnu@p+IN>
zQ$Vu@1Ylj#8-TGma$r(trm&-hdl;F-MG7Bz|866E`P5emr+w(?n8r`M<@Ne^wY~z_
z-Ud$9fC!8h!LwYL$GVF^24keGj5<2*XZ+>{ja&U-$2qxdxPG4bYY%AL%gductT8Zz
zQoav{mp~w$qd_}}N!!OHQ8{cV*{=;k*}3}1E1|L6zkk`6ZUDDSPO}&>7c#IP28v1=
zS7s7O61J;CDnBk^21v=mrJ33S?p}-wb#OgtW*c^ZI!a3Z6ReGgLKQjN2rXM&Nq)^G
z*tWe_Wcp=b-MkH3f|hZ!0&G*#Cgztw1%I~z+%yV;t!`a~GBfwkdSv@4($5O8JBEkF
zJx;2t*M+u_n*AL}(Q!#=L(+>yFN_;ULBtXwfWgA)HW!7)qFTD{UJA`~6M(Q18sBW6
zH9lO+ky~?ddLFnh6Oke~AF>ARTIi=NO2MeWPJsa_%z64M@EK5H5bsi`1N(B0WRb#?
zsp+5z?=y9}e5VVg&*`qARus3&^VM0M
zyGZi2DN(S;On>QCon|CG(fTvsAfQ_Q=gb%nWo>(Dl$_T9sH)oyaK!So&<{n&30X7A
mML9*;&yxR`m#-_I{@NeyKQyNAyD-840000yF`#vO$+8m?wl8J-D{utd5V7x+
zUISh>5eY~czas&1*6k}|kCa}3Q{bt}=Uhv=E0+gpG&(JYnjJ+Tftby11P=hVUxAY<
z<8v^-J)M35ery*Bjec&as
zRM%I)6>lJk|0wUB%zj&zf}i-8V%n8!{u^y18Nk!&pwZ=DukLrxEp1T><<3&Q6&;dN
zT|Y=NHdT4|9OLmh@XHXggF=M8Aney%Au^ys=tWABAbC9g2K)h3&FeFzL*RqjRyN+X
z&N?0y1GET7#~9lbT=#Qkm#$#D<4He6>W8clsL?fs<<)L=5DCofZLQJhv%xC-T9fQ8
z=8z21Y<2;B%wf#Qn_%yi*e>_$2!b=~0e2wlq<8)@{&@!*L6v0Oi>E
Z@-MY$$Qk0s4~+l-002ovPDHLkV1gnn*~tI^
literal 0
HcmV?d00001
diff --git a/эмс-бланк-пост.png.import b/эмс-бланк-пост.png.import
new file mode 100644
index 0000000..934c1ed
--- /dev/null
+++ b/эмс-бланк-пост.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://sx6xcpus2yf"
+path="res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://эмс-бланк-пост.png"
+dest_files=["res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/эмс-бланк.png b/эмс-бланк.png
new file mode 100755
index 0000000000000000000000000000000000000000..7762ebc2db5f43fd8a6d0942e97aac69bf29d02c
GIT binary patch
literal 787
zcmV+u1MK{XP)sV5G*eQ-dJRzof-TK{sy77enS6ZwD8LF0S1GS!6HE+
z1Z)UOnBZ9QjBqmD?`EMMsU;jow%?}cs_J*{tNW_7y}kWnFc>V_RydFaV8lfjP-Cp;
zjFHsXW_0nRj7drYJRA=H(%#jvJRgbb6Ogm&pbabm|MYsj?`&7OBqU9N2{4lM2QdALswzntP}I=Aq*9Xe
z#-_3!+d$WLQ7g?q160K6SS6x*Ljwl+Heagg{;!-J1Qr>mtPznCg3z8vRP%aoq(G_CnDN_t|S)H
zxqMw(xLjTRt+3m`0+7xtv#p3IB;5i!KR$judGqYq$PsPMMCgBxun99#D5VeMqoc8;
z9zaC2fRx+Ls;asn>GtCN`~9e@ZdI0Zbtmc?eqHv>wj)w+c{$5gR@$TI&)=41*{!Oo
z$Zh8*Cnue69zE)>KX|ZU5D{47+_So4)ttNPS!2F_)ou#-qH2P%S>svU2?N>4~5
RU+(|_002ovPDHLkV1o2ifWH6$
literal 0
HcmV?d00001
diff --git a/эмс-бланк.png.import b/эмс-бланк.png.import
new file mode 100644
index 0000000..2416285
--- /dev/null
+++ b/эмс-бланк.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cwabmu3cljbpr"
+path="res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://эмс-бланк.png"
+dest_files=["res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1