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

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

@@ -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)

View File

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

View File

@@ -0,0 +1,46 @@
[gd_scene load_steps=7 format=3 uid="uid://dn3jp4r8ij3rf"]
[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)
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")

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

@@ -0,0 +1,341 @@
[gd_scene load_steps=3 format=3 uid="uid://2rjgbflmbi7e"]
[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 = 386.0
theme_override_styles/panel = SubResource("StyleBoxTexture_deko5")
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
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
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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
metadata/device = "ПРД-Н"
[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
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

@@ -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://b3hcliukdo2wm

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://snpqhalopnp"
path="res://.godot/imported/эмс-бланк-перем.png-91f487c2526e52fdad35ee87d52f0d71.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sockets/ems_g/эмс-бланк-перем.png"
dest_files=["res://.godot/imported/эмс-бланк-перем.png-91f487c2526e52fdad35ee87d52f0d71.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://sx6xcpus2yf"
path="res://.godot/imported/эмс-бланк-пост.png-7c8eb3ac5e6dec0cbe7af0e932cdf19f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sockets/ems_g/эмс-бланк-пост.png"
dest_files=["res://.godot/imported/эмс-бланк-пост.png-7c8eb3ac5e6dec0cbe7af0e932cdf19f.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwabmu3cljbpr"
path="res://.godot/imported/эмс-бланк.png-15fb9a2c8256ce49f20eda63d19d1abc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://sockets/ems_g/эмс-бланк.png"
dest_files=["res://.godot/imported/эмс-бланк.png-15fb9a2c8256ce49f20eda63d19d1abc.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