Доработка ЭМС-Г

This commit is contained in:
TotMaxim
2025-11-30 15:57:16 +03:00
parent 2a090d02a3
commit aa9747be6a
24 changed files with 1003 additions and 54 deletions

View File

@@ -14,7 +14,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],
@@ -25,7 +25,7 @@
"ПРД-К1": {
"temperature_ukp": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32],
"power_ukp": [1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012],
"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],

View File

@@ -175,7 +175,6 @@ func on_modify_device(toggled: bool, name_device: String) -> void:
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"]))

View File

@@ -1,7 +1,22 @@
[gd_scene load_steps=7 format=3 uid="uid://bxorauom63ib6"]
[gd_scene load_steps=14 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"]
[ext_resource type="PackedScene" uid="uid://2rjgbflmbi7e" path="res://sockets/ems_g/емс-г-Н.tscn" id="2_0xm2m"]
[ext_resource type="Shader" uid="uid://cp2p2g3mgxm8o" path="res://main_ragial_gradient.gdshader" id="2_272bh"]
[ext_resource type="Script" uid="uid://b3hcliukdo2wm" path="res://sockets/ems_g/емс_г_н.gd" id="3_1bvp3"]
[ext_resource type="PackedScene" uid="uid://bhh0m5tbxjfmy" path="res://sockets/ems_g/емс-г-В.tscn" id="3_lquwl"]
[ext_resource type="PackedScene" uid="uid://pq47qp2lye4o" path="res://sockets/ems_g/емс-г-К.tscn" id="4_1bvp3"]
[ext_resource type="Script" uid="uid://cgtvbvw1xfqay" path="res://sockets/ems_g/емс_г_в.gd" id="5_lquwl"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_5vw27"]
shader = ExtResource("2_272bh")
shader_parameter/outerRadius = 4.405
shader_parameter/MainAlpha = 0.88
shader_parameter/circle_color = Color(0.900141, 0.363478, 0.296518, 1)
shader_parameter/circle_color2 = Color(0.192389, 0.0130258, 0.00462306, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kek77"]
bg_color = Color(0.678977, 0.102543, 0.388891, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0xm2m"]
bg_color = Color(0.1167, 0.351514, 0.35159, 1)
@@ -9,12 +24,12 @@ bg_color = Color(0.1167, 0.351514, 0.35159, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ig7tw"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h2yge"]
bg_color = Color(0.69546, 0.406261, 0.37248, 1)
bg_color = Color(0.635294, 0.203922, 0.337255, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1bvp3"]
bg_color = Color(0.323337, 0.235865, 0.51797, 1)
[node name="Control" type="Control"]
[node name="s" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
@@ -24,9 +39,11 @@ grow_vertical = 2
script = ExtResource("1_ig7tw")
[node name="Panel" type="Panel" parent="."]
material = SubResource("ShaderMaterial_5vw27")
layout_mode = 0
offset_right = 1634.0
offset_bottom = 885.0
theme_override_styles/panel = SubResource("StyleBoxFlat_kek77")
[node name="Yau-07-addr" type="GridContainer" parent="."]
layout_mode = 0
@@ -146,10 +163,11 @@ text = "10.1.1.43"
[node name="TabContainer" type="TabContainer" parent="."]
layout_mode = 0
offset_left = 237.0
offset_top = 19.0
offset_right = 1472.0
offset_bottom = 752.0
offset_left = 240.0
offset_top = 17.0
offset_right = 1536.0
offset_bottom = 768.0
tooltip_text = "Выбор прибора"
current_tab = 2
use_hidden_tabs_for_min_size = true
tab_focus_mode = 0
@@ -201,8 +219,8 @@ metadata/device = "ПРД-Н1"
[node name="SocketsBar" type="TabContainer" parent="TabContainer/ПРД-Н1"]
layout_mode = 0
offset_left = 199.0
offset_right = 1234.0
offset_bottom = 760.0
offset_right = 1296.0
offset_bottom = 752.0
current_tab = 2
tabs_position = 1
tab_focus_mode = 0
@@ -630,6 +648,7 @@ metadata/device = "ПРД-Н1"
[node name="ЕМС-Г" parent="TabContainer/ПРД-Н1/SocketsBar" groups=["ems_g"] instance=ExtResource("2_0xm2m")]
visible = false
layout_mode = 2
script = ExtResource("3_1bvp3")
metadata/device = "ПРД-Н1"
[node name="dkm" type="GridContainer" parent="TabContainer/ПРД-Н1"]
@@ -698,8 +717,8 @@ metadata/device = "ПРД-В1"
[node name="TabBar" type="TabContainer" parent="TabContainer/ПРД-В1"]
layout_mode = 0
offset_left = 199.0
offset_right = 1235.0
offset_bottom = 733.0
offset_right = 1296.0
offset_bottom = 751.0
current_tab = 2
tabs_position = 1
tab_focus_mode = 0
@@ -1159,10 +1178,10 @@ text = "ИП5-25"
metadata/bit = 7
metadata/device = "ПРД-В1"
[node name="ЕМС-Г" parent="TabContainer/ПРД-В1/TabBar" groups=["ems_g"] instance=ExtResource("2_0xm2m")]
[node name="ЕМС-Г" parent="TabContainer/ПРД-В1/TabBar" instance=ExtResource("3_lquwl")]
visible = false
layout_mode = 2
metadata/device = "ПРД-В1"
script = ExtResource("5_lquwl")
[node name="dkm" type="GridContainer" parent="TabContainer/ПРД-В1"]
layout_mode = 0
@@ -1230,9 +1249,8 @@ metadata/device = "ПРД-К1"
layout_direction = 2
layout_mode = 0
offset_left = 170.0
offset_top = 1.0
offset_right = 1235.0
offset_bottom = 734.0
offset_right = 1296.0
offset_bottom = 751.0
current_tab = 3
tabs_position = 1
tab_focus_mode = 0
@@ -1797,11 +1815,8 @@ text = "ИП5-25"
metadata/bit = 7
metadata/device = "ПРД-К1"
[node name="ЕМС-Г" parent="TabContainer/ПРД-К1/TabBar" groups=["ems_g"] instance=ExtResource("2_0xm2m")]
visible = false
[node name="ЕМС-Г" parent="TabContainer/ПРД-К1/TabBar" instance=ExtResource("4_1bvp3")]
layout_mode = 2
metadata/_tab_index = 4
metadata/device = "ПРД-В1"
[node name="dkm" type="GridContainer" parent="TabContainer/ПРД-К1"]
layout_mode = 0

View File

@@ -0,0 +1,19 @@
shader_type canvas_item;
uniform float outerRadius : hint_range(0.0, 50.0) = 1.0;
uniform float MainAlpha : hint_range(0.0, 1.0) = 1.0;
uniform vec4 circle_color : source_color = vec4(1.0, 0.0, 0.0, 1.0);
uniform vec4 circle_color2 : source_color = vec4(0.0, 0.0, 1.0, 1.0);
void fragment() {
float x = abs(UV.x-.35)*2.0;
float y = abs(UV.y-.3)*2.0;
float v = (sqrt((x*x)+(y*y))/outerRadius);
// Плавный переход прозрачности
float alpha = 1.0 - smoothstep(0.0, 1.0, v);
// Создаем градиент от circle_color к circle_color2
vec4 gradient_color = mix(circle_color, circle_color2, v);
COLOR = vec4(gradient_color.rgb, alpha * MainAlpha * gradient_color.a);
}

View File

@@ -0,0 +1 @@
uid://cp2p2g3mgxm8o

View File

@@ -1,9 +1,9 @@
[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"]
[ext_resource type="Texture2D" uid="uid://cwabmu3cljbpr" path="res://sockets/ems_g/эмс-бланк.png" id="1_bsrew"]
[ext_resource type="Script" uid="uid://bg8n8wt3kjqpm" path="res://sockets/ems_g/socket_status.gd" id="1_kydjn"]
[ext_resource type="Texture2D" uid="uid://sx6xcpus2yf" path="res://sockets/ems_g/эмс-бланк-пост.png" id="2_b2kjm"]
[ext_resource type="Texture2D" uid="uid://snpqhalopnp" path="res://sockets/ems_g/эмс-бланк-перем.png" id="3_odpjv"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q1ixs"]
bg_color = Color(0, 0, 0, 0.490196)

View File

@@ -0,0 +1,341 @@
[gd_scene load_steps=3 format=3 uid="uid://bhh0m5tbxjfmy"]
[ext_resource type="PackedScene" uid="uid://dn3jp4r8ij3rf" path="res://sockets/ems_g/socket_status.tscn" id="2_fbuee"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_deko5"]
[node name="ЕМС-Г" type="Panel" groups=["ems_g"]]
offset_top = -8.0
offset_bottom = -8.0
theme_override_styles/panel = SubResource("StyleBoxTexture_deko5")
metadata/_tab_index = 3
metadata/device = "ПРД-В1"
[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("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 0
metadata/device = "ПРД-В"
[node name="PanelContainer1" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 1
metadata/device = "ПРД-В"
[node name="PanelContainer2" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 2
metadata/device = "ПРД-В"
[node name="PanelContainer3" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 3
metadata/device = "ПРД-В"
[node name="PanelContainer4" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 4
metadata/device = "ПРД-В"
[node name="PanelContainer5" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 5
metadata/device = "ПРД-В"
[node name="PanelContainer6" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 6
metadata/device = "ПРД-В"
[node name="PanelContainer7" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 7
metadata/device = "ПРД-В"
[node name="PanelContainer8" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 8
metadata/device = "ПРД-В"
[node name="PanelContainer9" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 9
metadata/device = "ПРД-В"
[node name="PanelContainer10" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 10
metadata/device = "ПРД-В"
[node name="PanelContainer11" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 11
metadata/device = "ПРД-В"
[node name="PanelContainer12" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 12
metadata/device = "ПРД-В"
[node name="PanelContainer13" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 13
metadata/device = "ПРД-В"
[node name="PanelContainer14" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 14
metadata/device = "ПРД-В"
[node name="PanelContainer15" parent="output" groups=["output"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 15
metadata/device = "ПРД-В"
[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("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 0
metadata/device = "ПРД-В"
[node name="Label2" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ2 от УФ"
[node name="PanelContainer1" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 1
metadata/device = "ПРД-В"
[node name="Label3" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ3 от УФ"
[node name="PanelContainer2" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 2
metadata/device = "ПРД-В"
[node name="Label4" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ4 от УФ"
[node name="PanelContainer3" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 3
metadata/device = "ПРД-В"
[node name="Label5" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ5 от УФ"
[node name="PanelContainer4" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 4
metadata/device = "ПРД-В"
[node name="Label6" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ6 от УФ"
[node name="PanelContainer5" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 5
metadata/device = "ПРД-В"
[node name="Label7" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ7 от УФ"
[node name="PanelContainer6" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 6
metadata/device = "ПРД-В"
[node name="Label8" type="Label" parent="input"]
layout_mode = 2
text = "Х"
[node name="PanelContainer7" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 7
metadata/device = "ПРД-В"
[node name="Label9" type="Label" parent="input"]
layout_mode = 2
text = "СИ1 от ФС"
[node name="PanelContainer8" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 8
metadata/device = "ПРД-В"
[node name="Label10" type="Label" parent="input"]
layout_mode = 2
text = "СИ2 от ФС"
[node name="PanelContainer9" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 9
metadata/device = "ПРД-В"
[node name="Label11" type="Label" parent="input"]
layout_mode = 2
text = "СИ3 от ФС"
[node name="PanelContainer10" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 10
metadata/device = "ПРД-В"
[node name="Label12" type="Label" parent="input"]
layout_mode = 2
text = "СИ4 от ФС"
[node name="PanelContainer11" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 11
metadata/device = "ПРД-В"
[node name="Label13" type="Label" parent="input"]
layout_mode = 2
text = "СИ5 от ФС"
[node name="PanelContainer12" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 12
metadata/device = "ПРД-В"
[node name="Label14" type="Label" parent="input"]
layout_mode = 2
text = "СИ6 от ФС"
[node name="PanelContainer13" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 13
metadata/device = "ПРД-В"
[node name="Label15" type="Label" parent="input"]
layout_mode = 2
text = "СИ7 от ФС"
[node name="PanelContainer14" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 14
metadata/device = "ПРД-В"
[node name="Label16" type="Label" parent="input"]
layout_mode = 2
text = "Х"
[node name="PanelContainer15" parent="input" groups=["input"] instance=ExtResource("2_fbuee")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 15
metadata/device = "ПРД-В"

View File

@@ -0,0 +1,342 @@
[gd_scene load_steps=4 format=3 uid="uid://pq47qp2lye4o"]
[ext_resource type="Script" uid="uid://jyoti1htitwg" path="res://sockets/ems_g/емс_г_к.gd" id="1_rhd7l"]
[ext_resource type="PackedScene" uid="uid://dn3jp4r8ij3rf" path="res://sockets/ems_g/socket_status.tscn" id="2_0kk21"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_deko5"]
[node name="ЕМС-Г" type="Panel" groups=["ems_g"]]
visible = false
theme_override_styles/panel = SubResource("StyleBoxTexture_deko5")
script = ExtResource("1_rhd7l")
metadata/_tab_index = 4
metadata/device = "ПРД-К1"
[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("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 0
metadata/device = "ПРД-К"
[node name="PanelContainer1" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 1
metadata/device = "ПРД-К"
[node name="PanelContainer2" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 2
metadata/device = "ПРД-К"
[node name="PanelContainer3" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 3
metadata/device = "ПРД-К"
[node name="PanelContainer4" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 4
metadata/device = "ПРД-К"
[node name="PanelContainer5" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 5
metadata/device = "ПРД-К"
[node name="PanelContainer6" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 6
metadata/device = "ПРД-К"
[node name="PanelContainer7" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 7
metadata/device = "ПРД-К"
[node name="PanelContainer8" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 8
metadata/device = "ПРД-К"
[node name="PanelContainer9" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 9
metadata/device = "ПРД-К"
[node name="PanelContainer10" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 10
metadata/device = "ПРД-К"
[node name="PanelContainer11" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 11
metadata/device = "ПРД-К"
[node name="PanelContainer12" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 12
metadata/device = "ПРД-К"
[node name="PanelContainer13" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 13
metadata/device = "ПРД-К"
[node name="PanelContainer14" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 14
metadata/device = "ПРД-К"
[node name="PanelContainer15" parent="output" groups=["output"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 15
metadata/device = "ПРД-К"
[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("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 0
metadata/device = "ПРД-К"
[node name="Label2" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ2 от УФ"
[node name="PanelContainer1" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 1
metadata/device = "ПРД-К"
[node name="Label3" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ3 от УФ"
[node name="PanelContainer2" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 2
metadata/device = "ПРД-К"
[node name="Label4" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ4 от УФ"
[node name="PanelContainer3" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 3
metadata/device = "ПРД-К"
[node name="Label5" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ5 от УФ"
[node name="PanelContainer4" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 4
metadata/device = "ПРД-К"
[node name="Label6" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ6 от УФ"
[node name="PanelContainer5" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 5
metadata/device = "ПРД-К"
[node name="Label7" type="Label" parent="input"]
layout_mode = 2
text = "СЗИ7 от УФ"
[node name="PanelContainer6" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 6
metadata/device = "ПРД-К"
[node name="Label8" type="Label" parent="input"]
layout_mode = 2
text = "Х"
[node name="PanelContainer7" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 7
metadata/device = "ПРД-К"
[node name="Label9" type="Label" parent="input"]
layout_mode = 2
text = "СИ1 от ФС"
[node name="PanelContainer8" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 8
metadata/device = "ПРД-К"
[node name="Label10" type="Label" parent="input"]
layout_mode = 2
text = "СИ2 от ФС"
[node name="PanelContainer9" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 9
metadata/device = "ПРД-К"
[node name="Label11" type="Label" parent="input"]
layout_mode = 2
text = "СИ3 от ФС"
[node name="PanelContainer10" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 10
metadata/device = "ПРД-К"
[node name="Label12" type="Label" parent="input"]
layout_mode = 2
text = "СИ4 от ФС"
[node name="PanelContainer11" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 11
metadata/device = "ПРД-К"
[node name="Label13" type="Label" parent="input"]
layout_mode = 2
text = "СИ5 от ФС"
[node name="PanelContainer12" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 12
metadata/device = "ПРД-К"
[node name="Label14" type="Label" parent="input"]
layout_mode = 2
text = "СИ6 от ФС"
[node name="PanelContainer13" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 13
metadata/device = "ПРД-К"
[node name="Label15" type="Label" parent="input"]
layout_mode = 2
text = "СИ7 от ФС"
[node name="PanelContainer14" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 14
metadata/device = "ПРД-К"
[node name="Label16" type="Label" parent="input"]
layout_mode = 2
text = "Х"
[node name="PanelContainer15" parent="input" groups=["input"] instance=ExtResource("2_0kk21")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 15
metadata/device = "ПРД-К"

View File

@@ -1,15 +1,14 @@
[gd_scene load_steps=4 format=3 uid="uid://2rjgbflmbi7e"]
[gd_scene load_steps=3 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"]
[ext_resource type="PackedScene" uid="uid://dn3jp4r8ij3rf" path="res://sockets/ems_g/socket_status.tscn" id="1_deko5"]
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_deko5"]
[node name="ЕМС-Г" type="Panel"]
offset_top = -9.0
offset_right = 789.0
offset_bottom = 395.0
offset_bottom = 386.0
theme_override_styles/panel = SubResource("StyleBoxTexture_deko5")
script = ExtResource("1_tk3ne")
metadata/_tab_index = 3
[node name="output" type="GridContainer" parent="."]
@@ -81,81 +80,97 @@ layout_mode = 2
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 0
metadata/device = "ПРД-Н"
[node name="PanelContainer1" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 1
metadata/device = "ПРД-Н"
[node name="PanelContainer2" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 2
metadata/device = "ПРД-Н"
[node name="PanelContainer3" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 3
metadata/device = "ПРД-Н"
[node name="PanelContainer4" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 4
metadata/device = "ПРД-Н"
[node name="PanelContainer5" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 5
metadata/device = "ПРД-Н"
[node name="PanelContainer6" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 6
metadata/device = "ПРД-Н"
[node name="PanelContainer7" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 7
metadata/device = "ПРД-Н"
[node name="PanelContainer8" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 8
metadata/device = "ПРД-Н"
[node name="PanelContainer9" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 9
metadata/device = "ПРД-Н"
[node name="PanelContainer10" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 10
metadata/device = "ПРД-Н"
[node name="PanelContainer11" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 11
metadata/device = "ПРД-Н"
[node name="PanelContainer12" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 12
metadata/device = "ПРД-Н"
[node name="PanelContainer13" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 13
metadata/device = "ПРД-Н"
[node name="PanelContainer14" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 14
metadata/device = "ПРД-Н"
[node name="PanelContainer15" parent="output" groups=["output"] instance=ExtResource("1_deko5")]
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 15
metadata/device = "ПРД-Н"
[node name="input" type="GridContainer" parent="."]
layout_mode = 2
@@ -173,6 +188,7 @@ text = "СЗИ1 от УФ"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 0
metadata/device = "ПРД-Н"
[node name="Label2" type="Label" parent="input"]
layout_mode = 2
@@ -182,6 +198,7 @@ text = "СЗИ2 от УФ"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 1
metadata/device = "ПРД-Н"
[node name="Label3" type="Label" parent="input"]
layout_mode = 2
@@ -191,6 +208,7 @@ text = "СЗИ3 от УФ"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 2
metadata/device = "ПРД-Н"
[node name="Label4" type="Label" parent="input"]
layout_mode = 2
@@ -200,6 +218,7 @@ text = "СЗИ4 от УФ"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 3
metadata/device = "ПРД-Н"
[node name="Label5" type="Label" parent="input"]
layout_mode = 2
@@ -209,6 +228,7 @@ text = "СЗИ5 от УФ"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 4
metadata/device = "ПРД-Н"
[node name="Label6" type="Label" parent="input"]
layout_mode = 2
@@ -218,6 +238,7 @@ text = "СЗИ6 от УФ"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 5
metadata/device = "ПРД-Н"
[node name="Label7" type="Label" parent="input"]
layout_mode = 2
@@ -227,6 +248,7 @@ text = "СЗИ7 от УФ"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 6
metadata/device = "ПРД-Н"
[node name="Label8" type="Label" parent="input"]
layout_mode = 2
@@ -236,6 +258,7 @@ text = "Х"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 7
metadata/device = "ПРД-Н"
[node name="Label9" type="Label" parent="input"]
layout_mode = 2
@@ -245,6 +268,7 @@ text = "СИ1 от ФС"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 8
metadata/device = "ПРД-Н"
[node name="Label10" type="Label" parent="input"]
layout_mode = 2
@@ -254,6 +278,7 @@ text = "СИ2 от ФС"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 9
metadata/device = "ПРД-Н"
[node name="Label11" type="Label" parent="input"]
layout_mode = 2
@@ -263,6 +288,7 @@ text = "СИ3 от ФС"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 10
metadata/device = "ПРД-Н"
[node name="Label12" type="Label" parent="input"]
layout_mode = 2
@@ -272,6 +298,7 @@ text = "СИ4 от ФС"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 11
metadata/device = "ПРД-Н"
[node name="Label13" type="Label" parent="input"]
layout_mode = 2
@@ -281,6 +308,7 @@ text = "СИ5 от ФС"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 12
metadata/device = "ПРД-Н"
[node name="Label14" type="Label" parent="input"]
layout_mode = 2
@@ -290,6 +318,7 @@ text = "СИ6 от ФС"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 13
metadata/device = "ПРД-Н"
[node name="Label15" type="Label" parent="input"]
layout_mode = 2
@@ -299,6 +328,7 @@ text = "СИ7 от ФС"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 14
metadata/device = "ПРД-Н"
[node name="Label16" type="Label" parent="input"]
layout_mode = 2
@@ -308,3 +338,4 @@ text = "Х"
layout_mode = 2
mouse_default_cursor_shape = 2
metadata/bit = 15
metadata/device = "ПРД-Н"

View File

@@ -0,0 +1,97 @@
extends Panel
@onready var output_status = $output
# Константы состояний фреймов
const DEVICE: String = 'ПРД-В'
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():
print(get_meta('device'))
_setup_connections()
func _setup_connections():
var _all_input_nodes = get_tree().get_nodes_in_group('input')
var _all_outputs_nodes= get_tree().get_nodes_in_group('output')
var _filtered_inputs = _all_input_nodes.filter(
func(node): return node.get_meta('device') == DEVICE)
var _filtered_outputs = _all_outputs_nodes.filter(
func(node): return node.get_meta('device') == DEVICE)
for node in _filtered_inputs:
if node.has_signal('update_frame'):
node.update_frame.connect(on_update_frame_input)
for node in _filtered_outputs:
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

View File

@@ -0,0 +1 @@
uid://cgtvbvw1xfqay

View File

@@ -0,0 +1,97 @@
extends Panel
@onready var output_status = $output
# Константы состояний фреймов
const DEVICE: String = 'ПРД-К'
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():
print(get_meta('device'))
_setup_connections()
func _setup_connections():
var _all_input_nodes = get_tree().get_nodes_in_group('input')
var _all_outputs_nodes= get_tree().get_nodes_in_group('output')
var _filtered_inputs = _all_input_nodes.filter(
func(node): return node.get_meta('device') == DEVICE)
var _filtered_outputs = _all_outputs_nodes.filter(
func(node): return node.get_meta('device') == DEVICE)
for node in _filtered_inputs:
if node.has_signal('update_frame'):
node.update_frame.connect(on_update_frame_input)
for node in _filtered_outputs:
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

View File

@@ -0,0 +1 @@
uid://jyoti1htitwg

View File

@@ -2,6 +2,7 @@ extends Panel
@onready var output_status = $output
# Константы состояний фреймов
const DEVICE: String = 'ПРД-Н'
const FRAME_OFF := 0
const FRAME_CONST := 1
const FRAME_IMPULSE := 2
@@ -18,19 +19,23 @@ signal bits_changed(input_impulse: int, input_const: int, output_impulse: int, o
#endregion
func _ready():
print(get_meta('device'))
_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')
var _all_input_nodes = get_tree().get_nodes_in_group('input')
var _all_outputs_nodes= get_tree().get_nodes_in_group('output')
var _filtered_inputs = _all_input_nodes.filter(
func(node): return node.get_meta('device') == DEVICE)
var _filtered_outputs = _all_outputs_nodes.filter(
func(node): return node.get_meta('device') == DEVICE)
for node in _input_nodes:
for node in _filtered_inputs:
if node.has_signal('update_frame'):
node.update_frame.connect(on_update_frame_input)
for node in _output_nodes:
for node in _filtered_outputs:
if node.has_signal('update_frame'):
node.update_frame.connect(on_update_frame_output)
@@ -44,7 +49,7 @@ func on_update_frame_input(bit: int, frame: int)-> void:
# Отправляем сигналы только если значения изменились
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())
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:
@@ -60,7 +65,7 @@ func on_update_frame_output(bit: int, frame: int)-> void:
func _invert_bits(value: int) -> int:
"""Инвертирует все биты (0 становится 0xFFFF, 0xFFFF становится 0)"""
'''Инвертирует все биты (0 становится 0xFFFF, 0xFFFF становится 0)'''
return value ^ 0xFFFF
@@ -84,9 +89,9 @@ func get_output_const() -> int:
#region Функция для получения всех данных сразу
func get_all_bits() -> Dictionary:
return {
"input_impulse": _input_impulse,
"input_const": _input_const,
"output_impulse": _output_impulse,
"output_const": _output_const
'input_impulse': _input_impulse,
'input_const': _input_const,
'output_impulse': _output_impulse,
'output_const': _output_const
}
#endregion

View File

@@ -0,0 +1 @@
uid://b3hcliukdo2wm

View File

Before

Width:  |  Height:  |  Size: 704 B

After

Width:  |  Height:  |  Size: 704 B

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://snpqhalopnp"
path="res://.godot/imported/эмс-бланк-перем.png-011e0d06ef6ddca754d1f3d8e11a448c.ctex"
path="res://.godot/imported/эмс-бланк-перем.png-91f487c2526e52fdad35ee87d52f0d71.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://эмс-бланк-перем.png"
dest_files=["res://.godot/imported/эмс-бланк-перем.png-011e0d06ef6ddca754d1f3d8e11a448c.ctex"]
source_file="res://sockets/ems_g/эмс-бланк-перем.png"
dest_files=["res://.godot/imported/эмс-бланк-перем.png-91f487c2526e52fdad35ee87d52f0d71.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 483 B

After

Width:  |  Height:  |  Size: 483 B

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://sx6xcpus2yf"
path="res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex"
path="res://.godot/imported/эмс-бланк-пост.png-7c8eb3ac5e6dec0cbe7af0e932cdf19f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://эмс-бланк-пост.png"
dest_files=["res://.godot/imported/эмс-бланк-пост.png-439ef19be91abe97f22f96e843d00c61.ctex"]
source_file="res://sockets/ems_g/эмс-бланк-пост.png"
dest_files=["res://.godot/imported/эмс-бланк-пост.png-7c8eb3ac5e6dec0cbe7af0e932cdf19f.ctex"]
[params]

View File

Before

Width:  |  Height:  |  Size: 787 B

After

Width:  |  Height:  |  Size: 787 B

View File

@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cwabmu3cljbpr"
path="res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex"
path="res://.godot/imported/эмс-бланк.png-15fb9a2c8256ce49f20eda63d19d1abc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://эмс-бланк.png"
dest_files=["res://.godot/imported/эмс-бланк.png-59a703aa6cdf36be7c906f7ee7a30184.ctex"]
source_file="res://sockets/ems_g/эмс-бланк.png"
dest_files=["res://.godot/imported/эмс-бланк.png-15fb9a2c8256ce49f20eda63d19d1abc.ctex"]
[params]

View File

@@ -1 +0,0 @@
uid://d2fgin0bhm826