From 723f6535ac3dc2cf1ebe03cff42544921c2577d9 Mon Sep 17 00:00:00 2001 From: lepshiy Date: Fri, 5 Dec 2025 13:21:45 +0300 Subject: [PATCH 01/21] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=92=D0=BE=D1=81=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=82=D0=B5=D1=80=D1=8F=D0=BD=D0=BD=D1=8B=D1=85=20=D1=82=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=86=20=D0=B2=20"=D0=AD=D0=9C=D0=A1=20?= =?UTF-8?q?=D0=A2=D0=93"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/эмс2/эмс2.tscn | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/scenes/эмс2/эмс2.tscn b/scenes/эмс2/эмс2.tscn index 90bde52a..09fb4311 100644 --- a/scenes/эмс2/эмс2.tscn +++ b/scenes/эмс2/эмс2.tscn @@ -2,6 +2,7 @@ [ext_resource type="Texture2D" uid="uid://hkcvl2waf63s" path="res://data/вид сверху.png" id="1_b7vcf"] [ext_resource type="Script" uid="uid://bvlqgv7aapebl" path="res://scenes/эмс2/эмс_тг.gd" id="1_l3ueu"] +[ext_resource type="Texture2D" uid="uid://b1dw06ahtftq2" path="res://data/Окно частот0.png" id="3_2spgl"] [ext_resource type="Texture2D" uid="uid://0w6q4vfst0ry" path="res://data/OP-63.png" id="3_8gk36"] [ext_resource type="Texture2D" uid="uid://coxhivvc6uibs" path="res://data/Состояние РЭС 40.png" id="4_b3mus"] [ext_resource type="Texture2D" uid="uid://073el51yholj" path="res://data/454.png" id="4_nqi0i"] @@ -25,6 +26,7 @@ [ext_resource type="Texture2D" uid="uid://ddm55bo28sxcs" path="res://data/Квадрат салатный РЛС1.png" id="25_wmu4u"] [ext_resource type="Texture2D" uid="uid://dneqjcul4ipub" path="res://data/Квадрат салатный РЛС2.png" id="26_w5eif"] [ext_resource type="Texture2D" uid="uid://cyb60nh23ys6k" path="res://data/Квадрат салатный ГО.png" id="27_2ft3r"] +[ext_resource type="Texture2D" uid="uid://bymxiptkbufvs" path="res://data/Скруглённый квадрат серый.png" id="27_b5v2s"] [ext_resource type="Texture2D" uid="uid://cw8sd7v5f31ww" path="res://data/Квадрат салатный с трубкой.png" id="28_rra4y"] [ext_resource type="Texture2D" uid="uid://busl8rb38lis" path="res://data/Скруглённый прямоуг салатный.png" id="29_5u4bk"] [ext_resource type="Texture2D" uid="uid://xux3mch12733" path="res://data/Приём.png" id="30_l3ueu"] @@ -33,12 +35,6 @@ [ext_resource type="Texture2D" uid="uid://carr8bw5rwiwj" path="res://data/Кнопка подтверждения01.png" id="32_p41nv"] [ext_resource type="Texture2D" uid="uid://3siondd3feev" path="res://data/Скруглённый прямоугольник белый.png" id="33_5ifkb"] -[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_5u4bk"] -load_path = "res://.godot/imported/Окно частот0.png-6b01791c971bddb01337caf9077bf060.ctex" - -[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_l3ueu"] -load_path = "res://.godot/imported/Скруглённый квадрат серый.png-4655829309cca3b1dec2c9ae01376d54.ctex" - [node name="Panel" type="Panel"] script = ExtResource("1_l3ueu") @@ -56,7 +52,7 @@ offset_top = 240.0 offset_right = 1649.0 offset_bottom = 813.0 scale = Vector2(0.95, 0.95) -texture = SubResource("CompressedTexture2D_5u4bk") +texture = ExtResource("3_2spgl") expand_mode = 1 [node name="Op-63" type="TextureRect" parent="."] @@ -262,7 +258,7 @@ texture = ExtResource("28_rra4y") [node name="СкруглённыйКвадрат" type="Sprite2D" parent="."] position = Vector2(1299, 873) -texture = SubResource("CompressedTexture2D_l3ueu") +texture = ExtResource("27_b5v2s") [node name="СкруглённыйКвадратБелый" type="Sprite2D" parent="СкруглённыйКвадрат"] position = Vector2(0, 49) @@ -386,23 +382,23 @@ texture = ExtResource("15_2spgl") [node name="СкруглённыйКвадратСерый2" type="Sprite2D" parent="СкруглённыйКвадрат"] position = Vector2(49, 49) -texture = SubResource("CompressedTexture2D_l3ueu") +texture = ExtResource("27_b5v2s") [node name="СкруглённыйКвадратСерый3" type="Sprite2D" parent="СкруглённыйКвадрат"] position = Vector2(98, 98) -texture = SubResource("CompressedTexture2D_l3ueu") +texture = ExtResource("27_b5v2s") [node name="СкруглённыйКвадратСерый4" type="Sprite2D" parent="СкруглённыйКвадрат"] position = Vector2(147, 147) -texture = SubResource("CompressedTexture2D_l3ueu") +texture = ExtResource("27_b5v2s") [node name="СкруглённыйКвадратСерый5" type="Sprite2D" parent="СкруглённыйКвадрат"] position = Vector2(245, 245) -texture = SubResource("CompressedTexture2D_l3ueu") +texture = ExtResource("27_b5v2s") [node name="СкруглённыйКвадратСерый6" type="Sprite2D" parent="СкруглённыйКвадрат"] position = Vector2(196, 196) -texture = SubResource("CompressedTexture2D_l3ueu") +texture = ExtResource("27_b5v2s") [node name="Label" type="Label" parent="."] layout_mode = 0 From 802ac0afd75790e763cf57a8195c35017341ebec Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 17 Dec 2025 08:12:43 +0300 Subject: [PATCH 02/21] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/pribor-prd-k/pribor-prd-k.gd | 57 +++++++++-------------------- scenes/pribor-prd-n/pribor-prd-n.gd | 17 ++------- scenes/pribor-prd-v/pribor-prd-v.gd | 16 ++------ 3 files changed, 26 insertions(+), 64 deletions(-) diff --git a/scenes/pribor-prd-k/pribor-prd-k.gd b/scenes/pribor-prd-k/pribor-prd-k.gd index 14f73714..e28fbbe9 100644 --- a/scenes/pribor-prd-k/pribor-prd-k.gd +++ b/scenes/pribor-prd-k/pribor-prd-k.gd @@ -30,15 +30,12 @@ func _ready() -> void: func _process(_delta: float) -> void: if Engine.is_editor_hint(): return - set_frame($input_0, unit_prd_k.ems_g_sock_dic.ems_input_1) - set_frame($input_1, unit_prd_k.ems_g_sock_dic.ems_input_2) - set_frame($input_2, unit_prd_k.ems_g_sock_dic.ems_input_lit_1) - set_frame($output_0, unit_prd_k.ems_g_sock_dic.ems_output_1) - set_frame($output_1, unit_prd_k.ems_g_sock_dic.ems_output_2) - set_frame($output_2, unit_prd_k.ems_g_sock_dic.ems_output_lit_1) - - -func set_frame(node_frame: Node, val: int): node_frame.set_frame(val) + $input_0.set_frame(unit_prd_k.ems_g_sock_dic.ems_input_1) + $input_1.set_frame(unit_prd_k.ems_g_sock_dic.ems_input_2) + $input_2.set_frame(unit_prd_k.ems_g_sock_dic.ems_input_lit_1) + $output_0.set_frame(unit_prd_k.ems_g_sock_dic.ems_output_1) + $output_1.set_frame(unit_prd_k.ems_g_sock_dic.ems_output_2) + $output_2.set_frame(unit_prd_k.ems_g_sock_dic.ems_output_lit_1) func _on_start_control() -> void: @@ -60,12 +57,6 @@ func _enter_tree() -> void: _update_status_text(unit_prd_k.get_current_status()) -func _exit_tree() -> void: - if Engine.is_editor_hint(): - return - #prd_k_module.cmd_array.append([unit_prd_k.CmdCode.WRITE_ISA, [constants_k.ADDR_UG_LITERA_1, ug_work_1, constants_k.ADDR_UG_LITERA_2, ug_work_2, constants_k.ADDR_UG_LITERA_3, ug_work_3]]) - - static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void: for i_node_temperature in temperature_arr_node: var temperature_meta: String = i_node_temperature.get_meta('um') @@ -112,31 +103,18 @@ static func power_fill(pow_dic: Dictionary, fs_result: Dictionary, power_amplifi func on_press_device(_name_davice: String) -> void: - var nodes_y5: Array = get_tree().get_nodes_in_group('y-5') - var node_ip_power_arr: Array = get_tree().get_nodes_in_group('power_supply') - var fs_nodes: Array = get_tree().get_nodes_in_group('fs_group') - var power_amplifier: Array = get_tree().get_nodes_in_group('power_amplifier') - var default_reset_array_node: Array = get_tree().get_nodes_in_group('default_reset') - var module_fs_1: Node = $kasseta_fs_kd/ref_A2 - var module_fs_6: Node = $kasseta_fs_kd/ref_A4 - var dou_6: Node = $dou6_A7 - var module_fs_7: Node = $kasseta_fs_kd/ref_A7 - var dou_7: Node = $dou7_A8 var control_data: Dictionary = unit_prd_k.get_control_results() - var for_control_result: Dictionary = { - 'nodes_y5': nodes_y5, - 'node_ip_power_arr': node_ip_power_arr, - 'fs_nodes': fs_nodes, - 'power_amplifier': power_amplifier, - 'default_reset_array_node': default_reset_array_node, - 'module_fs_1': module_fs_1, - 'module_fs_6': module_fs_6, - 'dou_6': dou_6, - 'module_fs_7': module_fs_7, - 'dou_7': dou_7, - } - for_control_result.merge(control_data, true) - on_control_result(for_control_result) + control_data['nodes_y5'] = get_tree().get_nodes_in_group('y-5') + control_data['node_ip_power_arr'] = get_tree().get_nodes_in_group('power_supply') + control_data['fs_nodes'] = get_tree().get_nodes_in_group('fs_group') + control_data['power_amplifier'] = get_tree().get_nodes_in_group('power_amplifier') + control_data['default_reset_array_node'] = get_tree().get_nodes_in_group('default_reset') + control_data['module_fs_1'] = $kasseta_fs_kd/ref_A2 + control_data['module_fs_6'] = $kasseta_fs_kd/ref_A4 + control_data['dou_6'] = $dou6_A7 + control_data['module_fs_7'] = $kasseta_fs_kd/ref_A7 + control_data['dou_7'] = $dou7_A8 + on_control_result(control_data) static func on_control_result(for_result_dic: Dictionary) -> void: @@ -169,6 +147,7 @@ static func on_control_result(for_result_dic: Dictionary) -> void: set_default_state(for_result_dic.default_reset_array_node) set_default_state(for_result_dic.power_amplifier) return + var result_dic: Dictionary = for_result_dic.result_dic for f in for_result_dic.fs_nodes: var fs_meta: String = f.get_meta('fs') diff --git a/scenes/pribor-prd-n/pribor-prd-n.gd b/scenes/pribor-prd-n/pribor-prd-n.gd index 8cb1684d..e712464e 100644 --- a/scenes/pribor-prd-n/pribor-prd-n.gd +++ b/scenes/pribor-prd-n/pribor-prd-n.gd @@ -30,13 +30,10 @@ func _ready() -> void: func _process(_delta: float) -> void: if Engine.is_editor_hint(): return - set_frame($input_0, unit_prd_n.ems_g_sock_dic.ems_input_1) - set_frame($input_1, unit_prd_n.ems_g_sock_dic.ems_input_2) - set_frame($output_0, unit_prd_n.ems_g_sock_dic.ems_output_1) - set_frame($output_1, unit_prd_n.ems_g_sock_dic.ems_output_2) - - -func set_frame(node_frame: Node, val: int): node_frame.set_frame(val) + $input_0.set_frame(unit_prd_n.ems_g_sock_dic.ems_input_1) + $input_1.set_frame(unit_prd_n.ems_g_sock_dic.ems_input_2) + $output_0.set_frame(unit_prd_n.ems_g_sock_dic.ems_output_1) + $output_1.set_frame(unit_prd_n.ems_g_sock_dic.ems_output_2) func _on_start_control() -> void: @@ -60,12 +57,6 @@ func _enter_tree() -> void: _update_status_text(unit_prd_n.get_current_status()) -func _exit_tree() -> void: - if Engine.is_editor_hint(): - return - #prd_n_module.cmd_array.append([unit_prd_n.CmdCode.WRITE_ISA, [constants_n.ADDR_UG_LITERA_1, ug_work_1, constants_n.ADDR_UG_LITERA_2, ug_work_2]]) - - static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void: for i_node_temperature in temperature_arr_node: var temperature_meta: String = i_node_temperature.get_meta('um') diff --git a/scenes/pribor-prd-v/pribor-prd-v.gd b/scenes/pribor-prd-v/pribor-prd-v.gd index 3b55452f..626f208b 100644 --- a/scenes/pribor-prd-v/pribor-prd-v.gd +++ b/scenes/pribor-prd-v/pribor-prd-v.gd @@ -30,13 +30,10 @@ func _ready() -> void: func _process(_delta: float) -> void: if Engine.is_editor_hint(): return - set_frame($input_0, unit_prd_v.ems_g_sock_dic.ems_input_1) - set_frame($input_1, unit_prd_v.ems_g_sock_dic.ems_input_2) - set_frame($output_0, unit_prd_v.ems_g_sock_dic.ems_output_1) - set_frame($output_1, unit_prd_v.ems_g_sock_dic.ems_output_2) - - -func set_frame(node_frame: Node, val: int): node_frame.set_frame(val) + $input_0.set_frame(unit_prd_v.ems_g_sock_dic.ems_input_1) + $input_1.set_frame(unit_prd_v.ems_g_sock_dic.ems_input_2) + $output_0.set_frame(unit_prd_v.ems_g_sock_dic.ems_output_1) + $output_1.set_frame(unit_prd_v.ems_g_sock_dic.ems_output_2) func _on_start_control() -> void: @@ -60,11 +57,6 @@ func _enter_tree() -> void: _update_status_text(unit_prd_v.get_current_status()) -func _exit_tree() -> void: - if Engine.is_editor_hint(): - return - - static func temperature_fill(temperature_arr_node: Array, temperature_dic: Dictionary)->void: for i_node_temperature in temperature_arr_node: var temperature_meta: String = i_node_temperature.get_meta('um') From f5170666386b8e412250741b9ff925e807aa04da Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 17 Dec 2025 08:39:39 +0300 Subject: [PATCH 03/21] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=A6=D0=B2=D0=B5=D1=82=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B8=D0=B0=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B8=D1=82=D1=8C=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index d33a1599..94fdb89a 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -2,12 +2,20 @@ class_name Diagram extends Sprite2D const NUM_OF_RANGE = 7 const NUM_OF_DIRECTIONS = 4 +const color0_default: Color = Color(0.38, 0.47, 0.51, 1.0) +const color1_default: Color = Color(0.39, 0.44, 0.50, 1.0) +var color0: Color = Color(0.38, 0.47, 0.51, 1.0) +var color1: Color = Color(0.39, 0.44, 0.50, 1.0) + var fs_default_colors: Array[Color] ## Цвета по умолчанию для блоков ФС. @export var SecZap: PackedScene + func _ready() -> void: signaller.connect('map_mode_changed', Callable(self, 'set_view_mode')) + ProjectSettings.connect('settings_changed', _on_settings_changed) + _on_settings_changed() set_def_colors() @@ -100,12 +108,15 @@ func set_view_mode(val: int): material.set('shader_parameter/mode', val) -## Закрашивание по умолчанию блоков ФС цветами из настроек. -func set_def_colors(): - var color0: Color = ProjectSettings.get_setting('application/interfer/default_color0', Color(0.38, 0.47, 0.51, 1.0)) - var color1: Color = ProjectSettings.get_setting('application/interfer/default_color1', Color(0.39, 0.44, 0.50, 1.0)) +func _on_settings_changed(): + color0 = ProjectSettings.get_setting('application/interfer/default_color0', color0_default) + color1 = ProjectSettings.get_setting('application/interfer/default_color1', color1_default) color0 *= Color(1.0, 1.0, 1.0, 0.0) color1 *= Color(1.0, 1.0, 1.0, 0.0) + + +## Закрашивание по умолчанию блоков ФС цветами из настроек. +func set_def_colors(): var col_arr: Array = [color0, color1] var col = false for i in NUM_OF_RANGE: From 358fd20f5319cb4c4418023129284d8dac4226e2 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 17 Dec 2025 10:26:56 +0300 Subject: [PATCH 04/21] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shaders/antenas.tres | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/shaders/antenas.tres b/shaders/antenas.tres index 1dd2f46b..7334a182 100644 --- a/shaders/antenas.tres +++ b/shaders/antenas.tres @@ -75,10 +75,12 @@ void sector(inout vec4 c, vec2 uv, vec2 center, float a, float da, float r0, flo void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, inout int index) { float da = 180.0 / float(cnt); + vec4 col; + int j; + vec2 uvr; for (int i = -cnt; i <= cnt; i ++) { - vec4 col; - int j = index; + j = index; if (i == 2) { index--; @@ -89,7 +91,7 @@ void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, inout col.a = alpha + (random_timed(uv) - 0.5f) * ant_band_c[j].a; if (ant_band_m[j] == ANT_BAND_FAILED) { - vec2 uvr = uv; + uvr = uv; rotate_vec2(uvr, radians(afr), pc0); col.a *= (1.0 - ffr) + tanh(10.0 * sin(TIME * sfr + 2.0 * PI * uvr.x / pfr)) * ffr; } From 3d161fd37fa42544662c9e02c7a88d0442feab5d Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 17 Dec 2025 12:44:40 +0300 Subject: [PATCH 05/21] =?UTF-8?q?WIP=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9F=D0=BE=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=20=D0=BF=D1=80=D0=B8=D1=87=D0=B8=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=81=D0=B5=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=87=D0=B0=D1=81=D1=82=D0=BE=D1=82=D1=8B=20=D0=BA=D0=B0=D0=B4?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=20=D0=B2=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=20=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 3 + scenes/diagram/diagram.gd | 4 +- scenes/diagram/diagram.tscn | 8 +- scenes/работа/работа.gd | 2 +- scenes/работа/работа.tscn | 2 +- shaders/antenas.tres | 148 +++++++++++++++--------------------- shaders/tools.gdshaderinc | 2 +- 7 files changed, 74 insertions(+), 95 deletions(-) diff --git a/project.godot b/project.godot index 25420430..d14c68e7 100644 --- a/project.godot +++ b/project.godot @@ -88,6 +88,7 @@ window/subwindows/embed_subwindows=false window/frame_pacing/android/enable_frame_pacing=false window/stretch/mode="canvas_items" window/dpi/allow_hidpi=false +window/vsync/vsync_mode=0 [editor] @@ -205,6 +206,8 @@ common/enable_object_picking=false [rendering] shader_compiler/shader_cache/strip_debug=true +textures/default_filters/anisotropic_filtering_level=0 +anti_aliasing/screen_space_roughness_limiter/enabled=false quality/driver/fallback_to_gles2=true [shader_globals] diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 94fdb89a..6c148d0f 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -39,9 +39,7 @@ func get_strob_radius() -> float: return $строб.get_instance_shader_param func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation') -func get_radius_outter() -> float: return material.get('shader_parameter/radius_outter') -func get_radius_inner_0() -> float: return material.get('shader_parameter/radius_inner_0') -func get_radius_inner_1() -> float: return material.get('shader_parameter/radius_inner_1') +func get_radius_outter() -> float: return 280.0 # material.get('shader_parameter/radius_outter') func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c') func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m') diff --git a/scenes/diagram/diagram.tscn b/scenes/diagram/diagram.tscn index bc00d0ab..9ebf3c11 100644 --- a/scenes/diagram/diagram.tscn +++ b/scenes/diagram/diagram.tscn @@ -6,14 +6,16 @@ [ext_resource type="Shader" uid="uid://k36g8tww5yo" path="res://shaders/sector.gdshader" id="4_obn6s"] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"] -size = Vector2(1600, 1200) +size = Vector2(560, 560) [sub_resource type="ShaderMaterial" id="ShaderMaterial_lniyv"] resource_local_to_scene = true shader = ExtResource("4_obn6s") [node name="canvas" type="Sprite2D"] +texture_filter = 1 material = ExtResource("1_newdt") +scale = Vector2(2, 2) texture = SubResource("PlaceholderTexture2D_2bft1") centered = false script = ExtResource("2_8xjuy") @@ -21,5 +23,5 @@ SecZap = ExtResource("3_tgnog") [node name="строб" parent="." instance=ExtResource("3_tgnog")] material = SubResource("ShaderMaterial_lniyv") -position = Vector2(560, 560) -scale = Vector2(1100, 1100) +position = Vector2(280, 280) +scale = Vector2(550, 550) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 7f80c6cc..28a4c976 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -467,7 +467,7 @@ func get_strob_band(pos: Vector2, prev: float) -> float: ## Устанавливает центр строба по частоте и направлению. func set_strob(pos: Vector2) -> void: - var radp: Vector2 = tools.map_dec_to_rad(radius_center, pos) + var radp: Vector2 = tools.map_dec_to_rad(radius_center, pos / 2.0) if radp.y < $canvas.get_radius_outter(): $canvas.set_strob_dir(radp.x) $canvas.set_strob_radius(radp.y) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index c08c2b77..c5324b52 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -65,7 +65,7 @@ drag_scale_band = 0.05 drag_scale_width = 0.5 freq_high = 6000.0 freq_low = 370.0 -radius_center = Vector2(560, 560) +radius_center = Vector2(280, 280) radius_internal = 200.0 radius_outter = 200.0 strob_max_band = 15.538 diff --git a/shaders/antenas.tres b/shaders/antenas.tres index 7334a182..4472dcb0 100644 --- a/shaders/antenas.tres +++ b/shaders/antenas.tres @@ -1,4 +1,4 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=4 uid="uid://s6xe8igevnv2"] +[gd_resource type="ShaderMaterial" load_steps=3 format=4 uid="uid://s6xe8igevnv2"] [sub_resource type="Shader" id="1"] code = "shader_type canvas_item; @@ -11,74 +11,55 @@ code = "shader_type canvas_item; #define ANT_BAND_READY 1U /* Антенна (модуль ФС) готова или исправна */ #define ANT_BAND_FAILED 0U /* Антенна (модуль ФС) не исправно */ -uniform vec2 pc0 = vec2(560, 560); /* Центр сетки антенн */ -uniform float rotation: hint_range(0.0, 360.0) = 0.0; /* */ -uniform vec4 color0: source_color = vec4(0.38, 0.47, 0.51, 0.4); -uniform vec4 color1: source_color = vec4(0.39, 0.44, 0.50, 0.4); -uniform float radius_inner_0 = RADIUS_INNER_0; -uniform float radius_inner_1 = RADIUS_INNER_1; -uniform float radius_outter = 550.0; /* Радиус внешний. Должно быть равно ant_band_r1_6 */ -uniform float alpha: hint_range(0.0, 1.0) = 0.5; -uniform int mode = 0; /* Режим отображения. Приоритет РТО - 0, приоритет РЛС - 1 */ -uniform float ffr: hint_range(0.0, 1.0) = 0.2; /* Индикация неисправности модулей ФС. Заметность штриховки. */ -uniform float sfr: hint_range(0.0, 10.0) = 0.0; /* Индикация неисправности модулей ФС. Скорость движения штрховки */ -uniform float afr: hint_range(0.0, 180.0) = 0.0; /* Индикация неисправности модулей ФС. Наклон штрховки */ -uniform float pfr: hint_range(1.0, 20.0) = 10.0; /* Индикация неисправности модулей ФС. Частота штриховки */ - -const int ant_band_count_0 = 2; -const int ant_band_count_1 = 2; -const int ant_band_count_2 = 2; -const int ant_band_count_3 = 2; -const int ant_band_count_4 = 2; -const int ant_band_count_5 = 2; -const int ant_band_count_6 = 2; - -const float ant_band_r0_0[] = {RADIUS_INNER_0, RADIUS_INNER_1}; -const float ant_band_r0_1[] = {250.0, 490.0}; -const float ant_band_r0_2[] = {300.0, 500.0}; -const float ant_band_r0_3[] = {350.0, 510.0}; -const float ant_band_r0_4[] = {400.0, 520.0}; -const float ant_band_r0_5[] = {450.0, 530.0}; -const float ant_band_r0_6[] = {500.0, 540.0}; - -const float ant_band_r1_0[] = {250.0, 490.0}; -const float ant_band_r1_1[] = {300.0, 500.0}; -const float ant_band_r1_2[] = {350.0, 510.0}; -const float ant_band_r1_3[] = {400.0, 520.0}; -const float ant_band_r1_4[] = {450.0, 530.0}; -const float ant_band_r1_5[] = {500.0, 540.0}; -const float ant_band_r1_6[] = {550.0, 550.0}; - +uniform vec4 fxp = vec4(0.2, 0.0, 0.0, 10.0); /* Индикация неисправности модулей ФС: Заметность штриховки. Скорость движения штрховки. Наклон штрховки. Частота штриховки */ uniform vec4 ant_band_c[ANTENAS_COUNT]; uniform uint ant_band_m[ANTENAS_COUNT]; +uniform float rotation: hint_range(0.0, 360.0) = 0.0; /* */ +uniform int mode = 0; /* Режим отображения. Приоритет РТО - 0, приоритет РЛС - 1 */ +uniform sampler2D band_colors: source_color; + +const float ant_band_r0_0[] = {100.0, 240.0}; +const float ant_band_r0_1[] = {125.0, 245.0}; +const float ant_band_r0_2[] = {150.0, 250.0}; +const float ant_band_r0_3[] = {175.0, 255.0}; +const float ant_band_r0_4[] = {200.0, 260.0}; +const float ant_band_r0_5[] = {225.0, 265.0}; +const float ant_band_r0_6[] = {250.0, 270.0}; + +const float ant_band_r1_0[] = {125.0, 245.0}; +const float ant_band_r1_1[] = {150.0, 250.0}; +const float ant_band_r1_2[] = {175.0, 255.0}; +const float ant_band_r1_3[] = {200.0, 260.0}; +const float ant_band_r1_4[] = {225.0, 265.0}; +const float ant_band_r1_5[] = {250.0, 270.0}; +const float ant_band_r1_6[] = {275.0, 275.0}; + const float d4 = 90.0; const float ds = 1.0; +const float sf = 500.0; +const float radius_inner_0 = RADIUS_INNER_0; +const float radius_inner_1 = RADIUS_INNER_1; +const float alpha = 0.5; +const vec2 pc0 = vec2(280, 280); /* Центр сетки антенн */ +const int ant_band_count = 2; -void sector(inout vec4 c, vec2 uv, vec2 center, float a, float da, float r0, float r1, vec4 color) +float sector(float ac, float r0, float r1, vec4 ldt) { - float l = distance(center, uv); - vec2 d = uv - center; - float sf = 500.0; - float theta = atan(d.x, d.y) * sf; - da /= 2.0; - float a0 = radians(a - da); - float a1 = radians(a + da); - float va = smooth_px(a0 * sf, theta, ds) - smooth_px(a1 * sf, theta, ds); - float vr = smooth_px(r0, l, ds) - smooth_px(r1, l, ds); - float rgb = sqrt(va * vr); - c.rgb += color.rgb * rgb * color.a; - c.a += rgb * color.a; + float a0 = radians(ac - 45.0); + float a1 = radians(ac + 45.0); + float va = smooth_px(a0 * sf, ldt.w, ds) - smooth_px(a1 * sf, ldt.w, ds); + float vr = smooth_px(r0, ldt.x, ds) - smooth_px(r1, ldt.x, ds); + return sqrt(va * vr); } -void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, inout int index) +void antenas(inout vec4 c, vec2 uv, float r0, float r1, int index, vec4 ldt) { - float da = 180.0 / float(cnt); vec4 col; int j; vec2 uvr; - for (int i = -cnt; i <= cnt; i ++) + for (int i = -ant_band_count; i <= ant_band_count; i ++) { j = index; if (i == 2) @@ -86,18 +67,18 @@ void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, inout index--; j = index - 3; } - col.rgb = ant_band_c[j].rgb; index++; - col.a = alpha + (random_timed(uv) - 0.5f) * ant_band_c[j].a; - if (ant_band_m[j] == ANT_BAND_FAILED) + vec4 abc = ant_band_c[j]; + uint abm = ant_band_m[j]; + col.rgb = abc.rgb; + col.a = alpha + (random_timed(uv) - 0.5f) * abc.a; + if (abm == ANT_BAND_FAILED) { uvr = uv; - rotate_vec2(uvr, radians(afr), pc0); - col.a *= (1.0 - ffr) + tanh(10.0 * sin(TIME * sfr + 2.0 * PI * uvr.x / pfr)) * ffr; + rotate_vec2(uvr, radians(fxp.z), pc0); + col.a *= (1.0 - fxp.x) + tanh(10.0 * sin(TIME * fxp.y + 2.0 * PI * uvr.x / fxp.w)) * fxp.x; } - float v = float(i & 1); - vec4 color = v * col + (1.0f - v) * col; - sector(c, uv, p0, float(i) * da, da, r0, r1, color); + c += col * sector(float(i) * 90.0, r0, r1, ldt); } } @@ -113,32 +94,27 @@ void fragment() ivec2 isz = textureSize(TEXTURE, 0); vec2 uv = UV * vec2(float(isz.x), float(isz.y)); // координаты текущей точки в пикселях COLOR = vec4(0, 0, 0, 0); - int index = 0; - // Сетка антенн - antenas(COLOR, uv, pc0, ant_band_count_0, ant_band_r0_0[mode], ant_band_r1_0[mode], index); - antenas(COLOR, uv, pc0, ant_band_count_1, ant_band_r0_1[mode], ant_band_r1_1[mode], index); - antenas(COLOR, uv, pc0, ant_band_count_2, ant_band_r0_2[mode], ant_band_r1_2[mode], index); - antenas(COLOR, uv, pc0, ant_band_count_3, ant_band_r0_3[mode], ant_band_r1_3[mode], index); - antenas(COLOR, uv, pc0, ant_band_count_4, ant_band_r0_4[mode], ant_band_r1_4[mode], index); - antenas(COLOR, uv, pc0, ant_band_count_5, ant_band_r0_5[mode], ant_band_r1_5[mode], index); - antenas(COLOR, uv, pc0, ant_band_count_6, ant_band_r0_6[mode], ant_band_r1_6[mode], index); + vec2 d = uv - pc0; + float theta = atan(d.x, d.y) * sf; + vec4 ldt = vec4(distance(pc0, uv), d, theta); + antenas(COLOR, uv, ant_band_r0_0[mode], ant_band_r1_0[mode], 0, ldt); + antenas(COLOR, uv, ant_band_r0_1[mode], ant_band_r1_1[mode], 4, ldt); + antenas(COLOR, uv, ant_band_r0_2[mode], ant_band_r1_2[mode], 8, ldt); + antenas(COLOR, uv, ant_band_r0_3[mode], ant_band_r1_3[mode], 12, ldt); + antenas(COLOR, uv, ant_band_r0_4[mode], ant_band_r1_4[mode], 16, ldt); + antenas(COLOR, uv, ant_band_r0_5[mode], ant_band_r1_5[mode], 20, ldt); + antenas(COLOR, uv, ant_band_r0_6[mode], ant_band_r1_6[mode], 24, ldt); + if (COLOR.a == 0.0) discard; } " +[sub_resource type="ImageTexture" id="ImageTexture_ij61e"] + [resource] shader = SubResource("1") -shader_parameter/pc0 = Vector2(560, 560) -shader_parameter/rotation = 0.0 -shader_parameter/color0 = Color(0.380392, 0.470588, 0.509804, 0.537255) -shader_parameter/color1 = Color(0.3315, 0.45645, 0.51, 0.537255) -shader_parameter/radius_inner_0 = 200.0 -shader_parameter/radius_inner_1 = 480.0 -shader_parameter/radius_outter = 550.0 -shader_parameter/alpha = 0.5 -shader_parameter/mode = 0 -shader_parameter/ffr = 0.2 -shader_parameter/sfr = 0.0 -shader_parameter/afr = 0.0 -shader_parameter/pfr = 10.0 +shader_parameter/fxp = Vector4(0.13, 0, 0, 5) shader_parameter/ant_band_c = PackedVector4Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -shader_parameter/ant_band_m = PackedInt32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) +shader_parameter/ant_band_m = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/rotation = 0.0 +shader_parameter/mode = 0 +shader_parameter/band_colors = SubResource("ImageTexture_ij61e") diff --git a/shaders/tools.gdshaderinc b/shaders/tools.gdshaderinc index c65ee634..6c4bca0b 100644 --- a/shaders/tools.gdshaderinc +++ b/shaders/tools.gdshaderinc @@ -8,7 +8,7 @@ float random_timed(vec2 uv) float smooth_px(float r, float R, float ds) { - return 1.0 - smoothstep(R - ds, R + ds, r); + return smoothstep(R + ds, R - ds, r); } From 40f0ac7adec0486cc3259db03f5d87da9610430e Mon Sep 17 00:00:00 2001 From: sasha80 Date: Mon, 22 Dec 2025 14:33:53 +0300 Subject: [PATCH 06/21] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9F=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=87=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D1=82=D1=8B=20=D0=BA=D0=B0=D0=B4=D1=80=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B2=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B5=20=D0=A0=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 12 +-- scenes/diagram/diagram.tscn | 12 +-- scenes/работа/работа.tscn | 7 +- shaders/antenas.tres | 194 +++++++++++++++++++----------------- 4 files changed, 117 insertions(+), 108 deletions(-) diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 6c148d0f..681c3f56 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -1,13 +1,13 @@ -class_name Diagram extends Sprite2D +class_name Diagram extends ColorRect const NUM_OF_RANGE = 7 const NUM_OF_DIRECTIONS = 4 const color0_default: Color = Color(0.38, 0.47, 0.51, 1.0) const color1_default: Color = Color(0.39, 0.44, 0.50, 1.0) -var color0: Color = Color(0.38, 0.47, 0.51, 1.0) -var color1: Color = Color(0.39, 0.44, 0.50, 1.0) +var color0: Color = color0_default +var color1: Color = color1_default -var fs_default_colors: Array[Color] ## Цвета по умолчанию для блоков ФС. +var fs_default_colors: PackedColorArray ## Цвета по умолчанию для блоков ФС. @export var SecZap: PackedScene @@ -43,7 +43,7 @@ func get_radius_outter() -> float: return 280.0 # material.get('shader_paramete func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c') func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m') -func set_band_colors(val: Array): material.set('shader_parameter/ant_band_c', val) +func set_band_colors(val: PackedColorArray): material.set('shader_parameter/ant_band_c', val) func set_band_failures(val: Array): material.set('shader_parameter/ant_band_m', val) ## Добавляет сектор запрета[br] @@ -115,7 +115,7 @@ func _on_settings_changed(): ## Закрашивание по умолчанию блоков ФС цветами из настроек. func set_def_colors(): - var col_arr: Array = [color0, color1] + var col_arr: PackedColorArray = [color0, color1] var col = false for i in NUM_OF_RANGE: for j in NUM_OF_DIRECTIONS: diff --git a/scenes/diagram/diagram.tscn b/scenes/diagram/diagram.tscn index 9ebf3c11..1392ef24 100644 --- a/scenes/diagram/diagram.tscn +++ b/scenes/diagram/diagram.tscn @@ -1,23 +1,21 @@ -[gd_scene load_steps=7 format=3 uid="uid://b5kjdyxuwsot5"] +[gd_scene load_steps=6 format=3 uid="uid://b5kjdyxuwsot5"] [ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://shaders/antenas.tres" id="1_newdt"] [ext_resource type="Script" uid="uid://b85scuflwlqom" path="res://scenes/diagram/diagram.gd" id="2_8xjuy"] [ext_resource type="PackedScene" uid="uid://c73ahpv8uiuc7" path="res://scenes/diagram/sector.tscn" id="3_tgnog"] [ext_resource type="Shader" uid="uid://k36g8tww5yo" path="res://shaders/sector.gdshader" id="4_obn6s"] -[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"] -size = Vector2(560, 560) - [sub_resource type="ShaderMaterial" id="ShaderMaterial_lniyv"] resource_local_to_scene = true shader = ExtResource("4_obn6s") -[node name="canvas" type="Sprite2D"] +[node name="canvas" type="ColorRect"] texture_filter = 1 material = ExtResource("1_newdt") +offset_top = -3.0 +offset_right = 560.0 +offset_bottom = 557.0 scale = Vector2(2, 2) -texture = SubResource("PlaceholderTexture2D_2bft1") -centered = false script = ExtResource("2_8xjuy") SecZap = ExtResource("3_tgnog") diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index c5324b52..465ac1ae 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -84,7 +84,12 @@ action_mode = 0 text = "Обзорная карта" [node name="canvas" parent="." instance=ExtResource("11_b6su4")] -metadata/_edit_lock_ = true +layout_mode = 0 +offset_left = 280.0 +offset_top = 280.0 +offset_right = 840.0 +offset_bottom = 840.0 +pivot_offset = Vector2(280, 280) [node name="tilemap" parent="." instance=ExtResource("10_gtwyg")] self_modulate = Color(1, 1, 1, 0.415686) diff --git a/shaders/antenas.tres b/shaders/antenas.tres index 4472dcb0..dfb7e20c 100644 --- a/shaders/antenas.tres +++ b/shaders/antenas.tres @@ -1,120 +1,126 @@ -[gd_resource type="ShaderMaterial" load_steps=3 format=4 uid="uid://s6xe8igevnv2"] +[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://s6xe8igevnv2"] [sub_resource type="Shader" id="1"] code = "shader_type canvas_item; #include \"tools.gdshaderinc\" -#define RADIUS_INNER_0 200.0 /* Радиус внутренний для режима приоритет РТО */ -#define RADIUS_INNER_1 480.0 /* Радиус внутренний для режима приоритет РЛС */ -#define ANTENAS_COUNT 28 /* Количество антенн */ #define ANT_BAND_READY 1U /* Антенна (модуль ФС) готова или исправна */ #define ANT_BAND_FAILED 0U /* Антенна (модуль ФС) не исправно */ -uniform vec4 fxp = vec4(0.2, 0.0, 0.0, 10.0); /* Индикация неисправности модулей ФС: Заметность штриховки. Скорость движения штрховки. Наклон штрховки. Частота штриховки */ -uniform vec4 ant_band_c[ANTENAS_COUNT]; -uniform uint ant_band_m[ANTENAS_COUNT]; -uniform float rotation: hint_range(0.0, 360.0) = 0.0; /* */ -uniform int mode = 0; /* Режим отображения. Приоритет РТО - 0, приоритет РЛС - 1 */ -uniform sampler2D band_colors: source_color; - -const float ant_band_r0_0[] = {100.0, 240.0}; -const float ant_band_r0_1[] = {125.0, 245.0}; -const float ant_band_r0_2[] = {150.0, 250.0}; -const float ant_band_r0_3[] = {175.0, 255.0}; -const float ant_band_r0_4[] = {200.0, 260.0}; -const float ant_band_r0_5[] = {225.0, 265.0}; -const float ant_band_r0_6[] = {250.0, 270.0}; - -const float ant_band_r1_0[] = {125.0, 245.0}; -const float ant_band_r1_1[] = {150.0, 250.0}; -const float ant_band_r1_2[] = {175.0, 255.0}; -const float ant_band_r1_3[] = {200.0, 260.0}; -const float ant_band_r1_4[] = {225.0, 265.0}; -const float ant_band_r1_5[] = {250.0, 270.0}; -const float ant_band_r1_6[] = {275.0, 275.0}; - -const float d4 = 90.0; -const float ds = 1.0; -const float sf = 500.0; -const float radius_inner_0 = RADIUS_INNER_0; -const float radius_inner_1 = RADIUS_INNER_1; -const float alpha = 0.5; -const vec2 pc0 = vec2(280, 280); /* Центр сетки антенн */ -const int ant_band_count = 2; +// Конфигурация сетки +uniform int grid_cells_angle = 4; // Количество секторов (90° каждый) +uniform int grid_layers_radius = 7; // Количество слоёв по радиусу +uniform float alpha: hint_range(0.0, 1.0) = 0.5; +uniform float inner_radius = 0.36; // Внутренняя незакрашенная окружность +uniform float outer_radius = 1.0; // Внешний радиус +uniform float grid_line_width = 0.0025; // Сетка, ширина линий. Относительное значение +uniform float rotation: hint_range(0, 360) = 0.0; +uniform float ffr: hint_range(0.0, 1.0) = 0.2; /* Индикация неисправности модулей ФС. Заметность штриховки. Индикация неисправности модулей ФС */ +uniform float sfr: hint_range(0.0, 10.0) = 0.0; /* Индикация неисправности модулей ФС. Скорость движения штрховки */ +uniform float afr: hint_range(0.0, 180.0) = 0.0; /* Индикация неисправности модулей ФС. Наклон штрховки */ +uniform float pfr: hint_range(0.01, 1.0) = 0.05; /* Индикация неисправности модулей ФС. Частота штриховки */ -float sector(float ac, float r0, float r1, vec4 ldt) -{ - float a0 = radians(ac - 45.0); - float a1 = radians(ac + 45.0); - float va = smooth_px(a0 * sf, ldt.w, ds) - smooth_px(a1 * sf, ldt.w, ds); - float vr = smooth_px(r0, ldt.x, ds) - smooth_px(r1, ldt.x, ds); - return sqrt(va * vr); -} - - -void antenas(inout vec4 c, vec2 uv, float r0, float r1, int index, vec4 ldt) -{ - vec4 col; - int j; - vec2 uvr; - for (int i = -ant_band_count; i <= ant_band_count; i ++) - { - j = index; - if (i == 2) - { - index--; - j = index - 3; - } - index++; - vec4 abc = ant_band_c[j]; - uint abm = ant_band_m[j]; - col.rgb = abc.rgb; - col.a = alpha + (random_timed(uv) - 0.5f) * abc.a; - if (abm == ANT_BAND_FAILED) - { - uvr = uv; - rotate_vec2(uvr, radians(fxp.z), pc0); - col.a *= (1.0 - fxp.x) + tanh(10.0 * sin(TIME * fxp.y + 2.0 * PI * uvr.x / fxp.w)) * fxp.x; - } - c += col * sector(float(i) * 90.0, r0, r1, ldt); - } -} +// Вариант 1: Массив цветов для каждой ячейки (4×7 = 28) +uniform vec4 ant_band_c[28]: source_color; +uniform uint ant_band_m[28]; +varying vec2 centered_uv; +const float d4 = 1.0; +const float ds = 1.2; +const float sf = 1.0; +// Вариант 2: Текстура-палитра (альтернатива) void vertex() { - rotate_vec2(VERTEX, radians(360.0 - rotation), pc0); + centered_uv = (UV - 0.5) * 2.0; + rotate_vec2(centered_uv, radians(rotation + 315.0), vec2(0, 0)); } void fragment() { - ivec2 isz = textureSize(TEXTURE, 0); - vec2 uv = UV * vec2(float(isz.x), float(isz.y)); // координаты текущей точки в пикселях - COLOR = vec4(0, 0, 0, 0); - vec2 d = uv - pc0; - float theta = atan(d.x, d.y) * sf; - vec4 ldt = vec4(distance(pc0, uv), d, theta); - antenas(COLOR, uv, ant_band_r0_0[mode], ant_band_r1_0[mode], 0, ldt); - antenas(COLOR, uv, ant_band_r0_1[mode], ant_band_r1_1[mode], 4, ldt); - antenas(COLOR, uv, ant_band_r0_2[mode], ant_band_r1_2[mode], 8, ldt); - antenas(COLOR, uv, ant_band_r0_3[mode], ant_band_r1_3[mode], 12, ldt); - antenas(COLOR, uv, ant_band_r0_4[mode], ant_band_r1_4[mode], 16, ldt); - antenas(COLOR, uv, ant_band_r0_5[mode], ant_band_r1_5[mode], 20, ldt); - antenas(COLOR, uv, ant_band_r0_6[mode], ant_band_r1_6[mode], 24, ldt); - if (COLOR.a == 0.0) discard; + // 1. Переводим UV в координаты относительно центра (-1..1) + float dist = length(centered_uv); + + // 2. Отсекаем за пределами внешнего радиуса + if (dist > outer_radius) { + COLOR = vec4(0.0); + discard; + } + + // 3. Отсекаем внутри внутреннего радиуса + if (dist < inner_radius) { + COLOR = vec4(0.0); + discard; + } + + // 4. Вычисляем полярные координаты + float angle = 6.28318530718 - atan(centered_uv.y, centered_uv.x); + // Приводим к диапазону 0..2π + angle = mod(angle + 6.28318530718, 6.28318530718); + + // 5. Определяем индексы ячейки + // Сектор (0..3) + float sector_width = 6.28318530718 / float(grid_cells_angle); + int sector_idx = int(angle / sector_width); + + // Слой (0..6) + float available_radius = outer_radius - inner_radius; + float normalized_radius = (dist - inner_radius) / available_radius; + float layer_height = 1.0 / float(grid_layers_radius); + int layer_idx = int(normalized_radius / layer_height); + + // 6. Проверяем границы (чтобы не выйти за пределы) + if (layer_idx >= grid_layers_radius) { + COLOR = vec4(0.0); + discard; + } + + // 7. Рассчитываем глобальный индекс ячейки (0..27) + int cell_index = layer_idx * grid_cells_angle + sector_idx; + + // 8. Получаем цвет ячейки (два варианта) из массива цветов + vec4 cell_color = ant_band_c[cell_index]; + + // Границы по углу + float angle_in_sector = mod(angle, sector_width); + if (angle_in_sector < grid_line_width || + sector_width - angle_in_sector < grid_line_width) { + cell_color.rgb *= 0.7; // Затемняем границы + } + + // Границы по радиусу + float radius_in_layer = mod(normalized_radius, layer_height); + if (radius_in_layer < grid_line_width || + layer_height - radius_in_layer < grid_line_width) { + cell_color.rgb *= 0.7; // Затемняем границы + } + + // Подмешивание шума для включённых + cell_color.a = alpha + random_timed(centered_uv); + if (ant_band_m[cell_index] == ANT_BAND_FAILED) + { + vec2 uvr = (UV - 0.5) * 2.0; + cell_color.a *= (1.0 - ffr) + tanh(10.0 * sin(TIME * sfr + 2.0 * PI * uvr.x / pfr)) * ffr; + } + COLOR = cell_color; } " -[sub_resource type="ImageTexture" id="ImageTexture_ij61e"] - [resource] shader = SubResource("1") -shader_parameter/fxp = Vector4(0.13, 0, 0, 5) -shader_parameter/ant_band_c = PackedVector4Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -shader_parameter/ant_band_m = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/grid_cells_angle = 4 +shader_parameter/grid_layers_radius = 7 +shader_parameter/alpha = 0.5 +shader_parameter/inner_radius = 0.36 +shader_parameter/outer_radius = 1.0 +shader_parameter/grid_line_width = 0.0025 shader_parameter/rotation = 0.0 -shader_parameter/mode = 0 -shader_parameter/band_colors = SubResource("ImageTexture_ij61e") +shader_parameter/ffr = 0.2 +shader_parameter/sfr = 0.0 +shader_parameter/afr = 0.0 +shader_parameter/pfr = 0.024 +shader_parameter/ant_band_c = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/ant_band_m = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) From 3136fba97802d8478091c31d020fe9e5f46815a6 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Mon, 22 Dec 2025 14:34:15 +0300 Subject: [PATCH 07/21] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 681c3f56..8f13b070 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -93,9 +93,9 @@ func clear_all_seczap(): child.queue_free() -func set_seczap_color(id: int, color: Color): +func set_seczap_color(id: int, c: Color): var seczap: = get_node('SECZAP%d' % id) - seczap.set_instance_shader_parameter('color', color) + seczap.set_instance_shader_parameter('color', c) func set_view_mode(val: int): From ea3509ffb0897aaf3a4a494de4d3705e0ac86e65 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Mon, 22 Dec 2025 14:34:25 +0300 Subject: [PATCH 08/21] =?UTF-8?q?=D0=A7=D0=B8=D1=81=D1=82=D0=BA=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/tilemap/tilemap.gd | 1 - 1 file changed, 1 deletion(-) diff --git a/scenes/tilemap/tilemap.gd b/scenes/tilemap/tilemap.gd index 968f0583..b3ea9577 100644 --- a/scenes/tilemap/tilemap.gd +++ b/scenes/tilemap/tilemap.gd @@ -834,5 +834,4 @@ func draw_ship_radius() -> void: var radius_point_world = Vector2(ship_world_pos.x + radius_world, ship_world_pos.y) var radius_point_screen = world_to_screen(radius_point_world) var radius_screen = ship_screen_pos.distance_to(radius_point_screen) - #draw_arc(ship_screen_pos, radius_screen, 0, TAU, 64, Color.ORANGE, 2.0) # отрисовка контура draw_circle(ship_screen_pos, radius_screen, Color.ORANGE_RED * Color(1, 1, 1, 0.1)) # отрисовка заливки From 5b69f0f53fef7203fabb3a5802eb1ab5f341e000 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Mon, 22 Dec 2025 14:41:43 +0300 Subject: [PATCH 09/21] =?UTF-8?q?=D0=A0=D0=B5=D0=B3=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-list/scroll-ecm-list.gd | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index 47506b7a..6a9becd6 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -119,9 +119,8 @@ func on_interfer_new(ecm, table_index): $table.set_row_editable(i_row, false) $table.set_node_user_data(0, i_row, ecm) table_index[ecm.ispp] = i_row - # Будем надеяться, что отложенные вызовы производятся в том же порядке - $table.call_deferred('clear_rows_selected') - $table.call_deferred('set_row_selected', i_row, true) + $table.clear_rows_selected() + $table.set_row_selected(i_row, true) if not interfer.auto_enabled: signaller.emit_signal('interfer_selected', ecm) From a48d45d0b58e5a8122015b3a1d3f9e26649a65ef Mon Sep 17 00:00:00 2001 From: sasha80 Date: Mon, 22 Dec 2025 16:35:10 +0300 Subject: [PATCH 10/21] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 8 ++--- scenes/diagram/diagram.tscn | 24 ++++++++++--- shaders/{antenas.tres => antenas.gdshader} | 42 ++++++---------------- shaders/antenas.gdshader.uid | 1 + shaders/color-invers.gdshader | 2 +- shaders/select_tr.gdshader | 38 ++++++++++---------- shaders/strips.gdshader | 2 +- shaders/tools.gdshaderinc | 10 +++--- shaders/tracked.gdshader | 10 +++--- shaders/two-color.gdshader | 2 +- 10 files changed, 65 insertions(+), 74 deletions(-) rename shaders/{antenas.tres => antenas.gdshader} (68%) create mode 100644 shaders/antenas.gdshader.uid diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 8f13b070..74879bed 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -39,7 +39,7 @@ func get_strob_radius() -> float: return $строб.get_instance_shader_param func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation') -func get_radius_outter() -> float: return 280.0 # material.get('shader_parameter/radius_outter') +func get_radius_outter() -> float: return size.x / scale.x func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c') func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m') @@ -116,10 +116,8 @@ func _on_settings_changed(): ## Закрашивание по умолчанию блоков ФС цветами из настроек. func set_def_colors(): var col_arr: PackedColorArray = [color0, color1] - var col = false for i in NUM_OF_RANGE: for j in NUM_OF_DIRECTIONS: - fs_default_colors.append(col_arr[int(col)]) - col = not col - col = not col + fs_default_colors.append(col_arr[i & 1]) + i += 1 set_band_colors(fs_default_colors) diff --git a/scenes/diagram/diagram.tscn b/scenes/diagram/diagram.tscn index 1392ef24..4e802783 100644 --- a/scenes/diagram/diagram.tscn +++ b/scenes/diagram/diagram.tscn @@ -1,20 +1,34 @@ -[gd_scene load_steps=6 format=3 uid="uid://b5kjdyxuwsot5"] +[gd_scene load_steps=7 format=3 uid="uid://b5kjdyxuwsot5"] -[ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://shaders/antenas.tres" id="1_newdt"] +[ext_resource type="Shader" uid="uid://dhipoo0ju5ebg" path="res://shaders/antenas.gdshader" id="1_8cjpq"] [ext_resource type="Script" uid="uid://b85scuflwlqom" path="res://scenes/diagram/diagram.gd" id="2_8xjuy"] [ext_resource type="PackedScene" uid="uid://c73ahpv8uiuc7" path="res://scenes/diagram/sector.tscn" id="3_tgnog"] [ext_resource type="Shader" uid="uid://k36g8tww5yo" path="res://shaders/sector.gdshader" id="4_obn6s"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_oqtdt"] +shader = ExtResource("1_8cjpq") +shader_parameter/grid_cells_angle = 4 +shader_parameter/grid_layers_radius = 7 +shader_parameter/alpha = 0.5 +shader_parameter/inner_radius = 0.36 +shader_parameter/outer_radius = 1.0 +shader_parameter/grid_line_width = 0.0025 +shader_parameter/rotation = 0.0 +shader_parameter/ffr = 0.2 +shader_parameter/sfr = 0.0 +shader_parameter/pfr = 0.05 +shader_parameter/ant_band_c = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +shader_parameter/ant_band_m = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + [sub_resource type="ShaderMaterial" id="ShaderMaterial_lniyv"] resource_local_to_scene = true shader = ExtResource("4_obn6s") [node name="canvas" type="ColorRect"] texture_filter = 1 -material = ExtResource("1_newdt") -offset_top = -3.0 +material = SubResource("ShaderMaterial_oqtdt") offset_right = 560.0 -offset_bottom = 557.0 +offset_bottom = 560.0 scale = Vector2(2, 2) script = ExtResource("2_8xjuy") SecZap = ExtResource("3_tgnog") diff --git a/shaders/antenas.tres b/shaders/antenas.gdshader similarity index 68% rename from shaders/antenas.tres rename to shaders/antenas.gdshader index dfb7e20c..2d1ade08 100644 --- a/shaders/antenas.tres +++ b/shaders/antenas.gdshader @@ -1,24 +1,20 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://s6xe8igevnv2"] +shader_type canvas_item; -[sub_resource type="Shader" id="1"] -code = "shader_type canvas_item; - -#include \"tools.gdshaderinc\" +#include "tools.gdshaderinc" #define ANT_BAND_READY 1U /* Антенна (модуль ФС) готова или исправна */ #define ANT_BAND_FAILED 0U /* Антенна (модуль ФС) не исправно */ // Конфигурация сетки -uniform int grid_cells_angle = 4; // Количество секторов (90° каждый) -uniform int grid_layers_radius = 7; // Количество слоёв по радиусу +uniform int grid_cells_angle = 4; /* Количество секторов (90° каждый) */ +uniform int grid_layers_radius = 7; /* Количество слоёв по радиусу */ uniform float alpha: hint_range(0.0, 1.0) = 0.5; -uniform float inner_radius = 0.36; // Внутренняя незакрашенная окружность -uniform float outer_radius = 1.0; // Внешний радиус -uniform float grid_line_width = 0.0025; // Сетка, ширина линий. Относительное значение +uniform float inner_radius = 0.36; /* Внутренняя незакрашенная окружность. Относительное значение */ +uniform float outer_radius = 1.0; /* Внешний радиус. Относительное значение */ +uniform float grid_line_width = 0.0025; /* Сетка, ширина линий. Относительное значение */ uniform float rotation: hint_range(0, 360) = 0.0; uniform float ffr: hint_range(0.0, 1.0) = 0.2; /* Индикация неисправности модулей ФС. Заметность штриховки. Индикация неисправности модулей ФС */ uniform float sfr: hint_range(0.0, 10.0) = 0.0; /* Индикация неисправности модулей ФС. Скорость движения штрховки */ -uniform float afr: hint_range(0.0, 180.0) = 0.0; /* Индикация неисправности модулей ФС. Наклон штрховки */ uniform float pfr: hint_range(0.01, 1.0) = 0.05; /* Индикация неисправности модулей ФС. Частота штриховки */ @@ -97,30 +93,14 @@ void fragment() layer_height - radius_in_layer < grid_line_width) { cell_color.rgb *= 0.7; // Затемняем границы } - + // Подмешивание шума для включённых cell_color.a = alpha + random_timed(centered_uv); + + // Индикация не исправности if (ant_band_m[cell_index] == ANT_BAND_FAILED) { - vec2 uvr = (UV - 0.5) * 2.0; - cell_color.a *= (1.0 - ffr) + tanh(10.0 * sin(TIME * sfr + 2.0 * PI * uvr.x / pfr)) * ffr; + cell_color.a *= (1.0 - ffr) + tanh(10.0 * sin(TIME * sfr + 2.0 * PI * centered_uv.x / pfr)) * ffr; } COLOR = cell_color; } -" - -[resource] -shader = SubResource("1") -shader_parameter/grid_cells_angle = 4 -shader_parameter/grid_layers_radius = 7 -shader_parameter/alpha = 0.5 -shader_parameter/inner_radius = 0.36 -shader_parameter/outer_radius = 1.0 -shader_parameter/grid_line_width = 0.0025 -shader_parameter/rotation = 0.0 -shader_parameter/ffr = 0.2 -shader_parameter/sfr = 0.0 -shader_parameter/afr = 0.0 -shader_parameter/pfr = 0.024 -shader_parameter/ant_band_c = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) -shader_parameter/ant_band_m = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) diff --git a/shaders/antenas.gdshader.uid b/shaders/antenas.gdshader.uid new file mode 100644 index 00000000..f9244121 --- /dev/null +++ b/shaders/antenas.gdshader.uid @@ -0,0 +1 @@ +uid://dhipoo0ju5ebg diff --git a/shaders/color-invers.gdshader b/shaders/color-invers.gdshader index d082f902..12b79acc 100644 --- a/shaders/color-invers.gdshader +++ b/shaders/color-invers.gdshader @@ -2,5 +2,5 @@ shader_type canvas_item; void fragment() { - COLOR.rgb = vec3(1.0, 1.0, 1.0) - log(COLOR.rgb); + COLOR.rgb = vec3(1.0, 1.0, 1.0) - log(COLOR.rgb); } diff --git a/shaders/select_tr.gdshader b/shaders/select_tr.gdshader index 3dac47fe..4fdb901f 100644 --- a/shaders/select_tr.gdshader +++ b/shaders/select_tr.gdshader @@ -16,42 +16,40 @@ uniform float ant_band_r1_0 = 0.4; float smooth_px(float r, float R, float dss) { - return 1.0 - smoothstep(R - dss, R + dss, r); + return 1.0 - smoothstep(R - dss, R + dss, r); } void sector(inout vec4 c, vec2 uv, vec2 cnt, float a, float da, float r0, float r1, vec4 col) { - float l = distance(cnt, uv); - vec2 d = uv - cnt; - float sf = 500.0; - float theta = atan(d.x, d.y) * sf; - da /= 2.0; - float a0 = radians(a - da); - float a1 = radians(a + da); - float va = smooth_px(a0 * sf, theta, dsr) - smooth_px(a1 * sf, theta, dsr); - float vr = smooth_px(r0, l, ds) - smooth_px(r1, l, ds); + float l = distance(cnt, uv); + vec2 d = uv - cnt; + float sf = 500.0; + float theta = atan(d.x, d.y) * sf; + da /= 2.0; + float a0 = radians(a - da); + float a1 = radians(a + da); + float va = smooth_px(a0 * sf, theta, dsr) - smooth_px(a1 * sf, theta, dsr); + float vr = smooth_px(r0, l, ds) - smooth_px(r1, l, ds); float rgb = sqrt(va * vr); - c.rgb += col.rgb * rgb * col.a; + c.rgb += col.rgb * rgb * col.a; c.a += rgb * col.a; } void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, vec4 c0, vec4 c1) { - float da = 180.0f / float(cnt); + float da = 180.0f / float(cnt); for (int i = -cnt; i <= cnt; i ++) - { - float v = float(i & 1); - vec4 col = v * c0 + (1.0f - v) * c1; - sector(c, uv, p0, float(i) * da, da, r0, r1, col); - } + { + float v = float(i & 1); + vec4 col = v * c0 + (1.0f - v) * c1; + sector(c, uv, p0, float(i) * da, da, r0, r1, col); + } } vec2 rotateUVmatrinx(vec2 uv, vec2 pivot, float rotation) { - mat2 rotation_matrix=mat2( vec2(sin(rotation),-cos(rotation)), - vec2(cos(rotation),sin(rotation)) - ); + mat2 rotation_matrix=mat2(vec2(sin(rotation), -cos(rotation)), vec2(cos(rotation),sin(rotation))); uv -= pivot; uv *= rotation_matrix; uv += pivot; diff --git a/shaders/strips.gdshader b/shaders/strips.gdshader index 5f93c092..66f4c760 100644 --- a/shaders/strips.gdshader +++ b/shaders/strips.gdshader @@ -21,7 +21,7 @@ void vertex() void fragment() { - COLOR = color; + COLOR = color; if (disabled) { float ds = 1.0 / sharpness; diff --git a/shaders/tools.gdshaderinc b/shaders/tools.gdshaderinc index 6c4bca0b..a08e0ff7 100644 --- a/shaders/tools.gdshaderinc +++ b/shaders/tools.gdshaderinc @@ -8,16 +8,16 @@ float random_timed(vec2 uv) float smooth_px(float r, float R, float ds) { - return smoothstep(R + ds, R - ds, r); + return smoothstep(R + ds, R - ds, r); } void circle_thin(inout vec3 color, vec2 uv, vec2 p, float r, float w, vec3 c, float a) { - float d = distance(uv, p); - float v0 = r - w; - float v1 = r + w; - color += a * sqrt(smoothstep(v1, v0, d) * smoothstep(v0, v1, d) * c); + float d = distance(uv, p); + float v0 = r - w; + float v1 = r + w; + color += a * sqrt(smoothstep(v1, v0, d) * smoothstep(v0, v1, d) * c); } diff --git a/shaders/tracked.gdshader b/shaders/tracked.gdshader index 1c242dcd..76aa5ed3 100644 --- a/shaders/tracked.gdshader +++ b/shaders/tracked.gdshader @@ -19,9 +19,9 @@ uniform float speed: hint_range(0.0, 1024.0) = 0.0; float line(vec2 p1, vec2 p2, float width, vec2 uv) { - float dist = distance(p1, p2); // Дистанция между точками - float dist_uv = distance(p1, uv); // Дистанция между точкой и текущим пикселем - return 1.0 - floor(1.0 - (0.001 * width) + distance (mix(p1, p2, clamp(dist_uv / dist, 0.0, 1.0)), uv)); + float dist = distance(p1, p2); // Дистанция между точками + float dist_uv = distance(p1, uv); // Дистанция между точкой и текущим пикселем + return 1.0 - floor(1.0 - (0.001 * width) + distance (mix(p1, p2, clamp(dist_uv / dist, 0.0, 1.0)), uv)); } @@ -65,12 +65,12 @@ void fragment() float px1 = 0.0; float py0 = 0.0; float py1 = 0.0; - COLOR = vec4(1.0, 0.0, 0.0, 0.0); //texture(TEXTURE, UV); // Цвет текущей точки + COLOR = vec4(1.0, 0.0, 0.0, 0.0); // Цвет текущей точки get_line_points(px0, px1, py0, py1, 330.0); COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV); get_line_points(px0, px1, py0, py1, 90.0); COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV); get_line_points(px0, px1, py0, py1, 210.0); COLOR.a += line(vec2(px0, py0), vec2(px1, py1), 15.0, UV); - COLOR *= smooth_px(length(UV-center), radius, DSS); + COLOR *= smooth_px(length(UV - center), radius, DSS); } diff --git a/shaders/two-color.gdshader b/shaders/two-color.gdshader index fd0f624b..de27a828 100644 --- a/shaders/two-color.gdshader +++ b/shaders/two-color.gdshader @@ -13,5 +13,5 @@ vec3 bw_to_2color(vec3 c, vec3 dark, vec3 light) void fragment() { - COLOR.rgb = bw_to_2color(texture(TEXTURE, UV).rgb, white, black); + COLOR.rgb = bw_to_2color(texture(TEXTURE, UV).rgb, white, black); } From 3a4a2c1ecacc6cc809d3e268a4747e01c67f101a Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 08:24:02 +0300 Subject: [PATCH 11/21] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9D=D0=B5=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BD=D1=8B=D0=B9=20=D0=B8=D0=BD=D0=B4=D0=B5=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/tcp5p28.gd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/tcp5p28.gd b/scripts/tcp5p28.gd index a86f7755..1e5699bb 100644 --- a/scripts/tcp5p28.gd +++ b/scripts/tcp5p28.gd @@ -160,7 +160,7 @@ class TCP5P28 extends unit.Unit: flags |= 0 << 8 # Флаг рекомендуемой помехи flags |= int(th.fflags['aoa']) << 9 # Флаг доставерности пеленга flags |= int(th.fflags['alt']) << 10 # Флаг доставерности высоты - flags |= int(th.fflags['power']) << 11 # Флаг доставерности мощности + flags |= int(th.fflags['pow']) << 11 # Флаг доставерности мощности flags |= int(th.fflags['baud']) << 12 # Флаг доставерности ск. мод. flags |= int(th.fflags['slon']) << 13 # Флаг доставерности долготы ст. позиции flags |= int(th.fflags['slat']) << 14 # Флаг доставерности широты ст. позиции @@ -174,7 +174,7 @@ class TCP5P28 extends unit.Unit: th_data.encode_u16(16, int(th.alt)) # Высота объекта th_data.encode_u16(18, int(th.freq)) # Частота объекта th_data.encode_u16(20, int(th.width)) # Ширина частотной полосы объекта - th_data.encode_u8(22, int(th.power)) # Мощность излучения объекта + th_data.encode_u8(22, int(th.pow)) # Мощность излучения объекта var mod = MOD_TYPES.find(th.tmod) if mod == -1: mod = 0 th_data.encode_u8(23, int(mod)) # Тип модуляции From cda50a0e072c78d8183853a99d996aaa5a28c004 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 09:13:36 +0300 Subject: [PATCH 12/21] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/yau07.gd | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/yau07.gd b/scripts/yau07.gd index 328c4563..c44b7e7c 100644 --- a/scripts/yau07.gd +++ b/scripts/yau07.gd @@ -80,14 +80,14 @@ class YaU07 extends unit.Unit: rc = Error.FAILED return rc - func send_flash(cmd_code: int, fl_data: Array, num_byte_rd: int, id_sector: int = 0) -> bool: + func send_flash(cmd_code: CmdCode, fl_data: Array, num_byte_rd: int, id_sector: int = 0) -> bool: if (cmd_state == CmdState.WAIT) \ or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.UNCK): return false - if not ((cmd_code == CmdCode.ERASE_FLASH) or (cmd_code == CmdCode.WRITE_FLASH) \ - or (cmd_code == CmdCode.READ_FLASH) or (cmd_code == CmdCode.LOAD_FLASH) - or (cmd_code == CmdCode.READ_FLASH_MP550) or (cmd_code == CmdCode.WRITE_FLASH_MP550)): + if not cmd_code in [CmdCode.ERASE_FLASH, + CmdCode.WRITE_FLASH, CmdCode.READ_FLASH, CmdCode.LOAD_FLASH, + CmdCode.READ_FLASH_MP550, CmdCode.WRITE_FLASH_MP550]: return false cmd_num_tx = (cmd_num_rx + 1) % 0xffff tx_data.encode_u16(0, cmd_retry) @@ -122,7 +122,7 @@ class YaU07 extends unit.Unit: cmd_code_tx = cmd_code return true - func send_isa(cmd_code: int, ports_data: Array) -> bool: + func send_isa(cmd_code: CmdCode, ports_data: Array) -> bool: if (cmd_state == CmdState.WAIT) \ or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.UNCK): @@ -150,7 +150,7 @@ class YaU07 extends unit.Unit: cmd_code_tx = cmd_code return true - func send_block(cmd_code: int, block_len: int, port: Array) -> bool: + func send_block(cmd_code: CmdCode, block_len: int, port: Array) -> bool: if (cmd_state == CmdState.WAIT) \ or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.UNCK): @@ -173,7 +173,7 @@ class YaU07 extends unit.Unit: cmd_code_tx = cmd_code return true - func send_load_ems_done(cmd_code: int) -> bool: + func send_load_ems_done(cmd_code: CmdCode) -> bool: if (cmd_state == CmdState.WAIT) \ or (cmd_state == CmdState.SEND) \ or (cmd_state == CmdState.UNCK): From 0292d2ef71f5e9246ea3e09cea34709ed9b45c80 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 09:14:31 +0300 Subject: [PATCH 13/21] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=A0=D0=B5=D0=B3=D1=80?= =?UTF-8?q?=D0=B5=D1=81=D1=81=D0=B8=D1=8F.=20=D0=A0=D0=B5=D0=B6=D0=B8?= =?UTF-8?q?=D0=BC=20=D0=BA=D0=B0=D1=80=D1=82=D1=8B=20=D0=BD=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E=D1=87=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.tscn | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 465ac1ae..a8bc1d85 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -74,15 +74,6 @@ strob_min_band = 0.1 strob_min_width = 5.0 metadata/_edit_vertical_guides_ = [] -[node name="btn_view" type="CheckBox" parent="."] -layout_mode = 0 -offset_left = 835.0 -offset_top = 5.0 -offset_right = 994.0 -offset_bottom = 32.0 -action_mode = 0 -text = "Обзорная карта" - [node name="canvas" parent="." instance=ExtResource("11_b6su4")] layout_mode = 0 offset_left = 280.0 @@ -91,6 +82,16 @@ offset_right = 840.0 offset_bottom = 840.0 pivot_offset = Vector2(280, 280) +[node name="btn_view" type="CheckBox" parent="canvas"] +layout_mode = 0 +offset_left = 417.5 +offset_top = 2.5 +offset_right = 576.5 +offset_bottom = 29.5 +scale = Vector2(0.5, 0.5) +action_mode = 0 +text = "Обзорная карта" + [node name="tilemap" parent="." instance=ExtResource("10_gtwyg")] self_modulate = Color(1, 1, 1, 0.415686) position = Vector2(360, 360) @@ -383,7 +384,7 @@ texture_normal = ExtResource("14_ggrwd") [connection signal="drag_begin" from="." to="." method="_on_drag_begin"] [connection signal="drag_continue" from="." to="." method="_on_drag_continue"] -[connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"] +[connection signal="toggled" from="canvas/btn_view" to="." method="on_button_view_toggled"] [connection signal="toggled" from="chk_auto" to="." method="on_value_changed"] [connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"] From 76ef0d4ac6f49cce9c5ba84982a0ce116fa523c8 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 09:45:45 +0300 Subject: [PATCH 14/21] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 43 +++++++++++++++++++-------------------- scenes/работа/работа.tscn | 2 +- shaders/antenas.gdshader | 11 +++------- 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 74879bed..778b62d2 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -21,30 +21,29 @@ func _ready() -> void: func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125 -func set_canvas_rotation(val: float) -> void: material.set('shader_parameter/rotation', val) -func set_strob_visible(val: bool): $строб.visible = val -func set_strob_center(val: Vector2): $строб.position = val -func set_strob_dir(val: float): $строб.set_instance_shader_parameter('dir', val) -func set_strob_width(val: float): $строб.set_instance_shader_parameter('width', val) -func set_strob_band(val: float): $строб.set_instance_shader_parameter('band', val / 125.0) -func set_strob_radius(val: float): $строб.set_instance_shader_parameter('radius', sv(val)) -func set_strob_color(val: Color): $строб.set_instance_shader_parameter('color', val) +func set_band_colors(val: PackedColorArray): material.set('shader_parameter/ant_band_c', val) +func set_band_failures(val: PackedInt32Array): material.set('shader_parameter/ant_band_m', val) +func set_canvas_rotation(val: float): material.set('shader_parameter/rotation', val) +func set_strob_band(val: float): $строб.set_instance_shader_parameter('band', val / 125.0) +func set_strob_center(val: Vector2): $строб.position = val +func set_strob_color(val: Color): $строб.set_instance_shader_parameter('color', val) +func set_strob_dir(val: float): $строб.set_instance_shader_parameter('dir', val) +func set_strob_radius(val: float): $строб.set_instance_shader_parameter('radius', sv(val)) +func set_strob_visible(val: bool): $строб.visible = val +func set_strob_width(val: float): $строб.set_instance_shader_parameter('width', val) -func get_strob_center() -> Vector2: return $строб.position -func get_strob_visible() -> bool: return $строб.visible -func get_strob_dir() -> float: return $строб.get_instance_shader_parameter('dir') -func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width') -func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0 -func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0 -func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') - -func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation') -func get_radius_outter() -> float: return size.x / scale.x - -func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c') +func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c') func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m') -func set_band_colors(val: PackedColorArray): material.set('shader_parameter/ant_band_c', val) -func set_band_failures(val: Array): material.set('shader_parameter/ant_band_m', val) +func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation') +func get_radius_outter() -> float: return size.x / scale.x +func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0 +func get_strob_center() -> Vector2: return $строб.position +func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') +func get_strob_dir() -> float: return $строб.get_instance_shader_parameter('dir') +func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0 +func get_strob_visible() -> bool: return $строб.visible +func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width') + ## Добавляет сектор запрета[br] ## [param id] - Индекс сектора запрета.[br] diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index a8bc1d85..371e6938 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -389,8 +389,8 @@ texture_normal = ExtResource("14_ggrwd") [connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"] [connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"] -[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] [connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"] +[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] [connection signal="button_down" from="zoom_minus" to="tilemap" method="_on_zoom_minus_button_down"] [connection signal="button_up" from="zoom_minus" to="tilemap" method="_on_zoom_button_up"] [connection signal="pressed" from="btn_all_work" to="." method="_on_btn_all_work_pressed"] diff --git a/shaders/antenas.gdshader b/shaders/antenas.gdshader index 2d1ade08..ede8b7b3 100644 --- a/shaders/antenas.gdshader +++ b/shaders/antenas.gdshader @@ -15,21 +15,17 @@ uniform float grid_line_width = 0.0025; /* Сетка, ширина линий. uniform float rotation: hint_range(0, 360) = 0.0; uniform float ffr: hint_range(0.0, 1.0) = 0.2; /* Индикация неисправности модулей ФС. Заметность штриховки. Индикация неисправности модулей ФС */ uniform float sfr: hint_range(0.0, 10.0) = 0.0; /* Индикация неисправности модулей ФС. Скорость движения штрховки */ -uniform float pfr: hint_range(0.01, 1.0) = 0.05; /* Индикация неисправности модулей ФС. Частота штриховки */ - +uniform float pfr: hint_range(0.01, 1.0) = 0.025; /* Индикация неисправности модулей ФС. Частота штриховки */ // Вариант 1: Массив цветов для каждой ячейки (4×7 = 28) uniform vec4 ant_band_c[28]: source_color; uniform uint ant_band_m[28]; varying vec2 centered_uv; -const float d4 = 1.0; -const float ds = 1.2; -const float sf = 1.0; -// Вариант 2: Текстура-палитра (альтернатива) void vertex() { + // 1. Переводим UV в координаты относительно центра (-1..1) centered_uv = (UV - 0.5) * 2.0; rotate_vec2(centered_uv, radians(rotation + 315.0), vec2(0, 0)); } @@ -37,7 +33,6 @@ void vertex() void fragment() { - // 1. Переводим UV в координаты относительно центра (-1..1) float dist = length(centered_uv); // 2. Отсекаем за пределами внешнего радиуса @@ -95,7 +90,7 @@ void fragment() } // Подмешивание шума для включённых - cell_color.a = alpha + random_timed(centered_uv); + cell_color.a = alpha + random_timed(centered_uv) * cell_color.a; // Индикация не исправности if (ant_band_m[cell_index] == ANT_BAND_FAILED) From 8d3b80cf4cf153081320ed691763dd65d69b652e Mon Sep 17 00:00:00 2001 From: lepshiy Date: Wed, 24 Dec 2025 11:17:05 +0300 Subject: [PATCH 15/21] =?UTF-8?q?=D0=94=D0=B8=D0=BD=D0=B0=D0=BC=D0=B8?= =?UTF-8?q?=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=86=D0=B2=D0=B5=D1=82=D0=B0?= =?UTF-8?q?=20=D1=81=D1=85=D0=B5=D0=BC=D1=8B=20=D0=AD2.=20=D0=98=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=BD=D0=B0?= =?UTF-8?q?=D1=87=D0=BA=D0=BE=D0=B2=20=D0=B2=20=D0=AD=D0=9C=D0=A1=20=D0=A2?= =?UTF-8?q?=D0=93=20=D0=B8=20=D0=9A=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/2разъединение.png.import | 34 + data/2соединение.png.import | 34 + data/Передатчик.png | Bin 0 -> 5064 bytes data/Передатчик.png.import | 34 + data/Приёмник.png | Bin 0 -> 4424 bytes data/Приёмник.png.import | 34 + data/Состояние РЭС 2.png | Bin 0 -> 4890 bytes data/Состояние РЭС 2.png.import | 34 + data/Состояние РЭС 4.png | Bin 0 -> 4176 bytes data/Состояние РЭС 4.png.import | 34 + data/Угловой квадрат3.png | Bin 0 -> 6300 bytes data/Угловой квадрат3.png.import | 34 + data/разъединение.png.import | 34 + data/связь.png | Bin 0 -> 1386 bytes data/связь.png.import | 34 + data/соединение.png.import | 34 + project.godot | 58 ++ scenes/контроль/connect_pribor.gd | 6 +- scenes/контроль/panel_container.gd | 11 + scenes/контроль/panel_container.gd.uid | 1 + scenes/контроль/внешний.gd | 2 +- scenes/контроль/кнопка-прибора.gd | 15 +- scenes/контроль/контроль.tscn | 595 +++++++++++----- scenes/настройки/настройки.gd | 38 +- scenes/эмс/эмс.tscn | 32 +- scenes/эмс2/эмс2.tscn | 943 ++++++++++++++----------- 26 files changed, 1437 insertions(+), 604 deletions(-) create mode 100644 data/2разъединение.png.import create mode 100644 data/2соединение.png.import create mode 100644 data/Передатчик.png create mode 100644 data/Передатчик.png.import create mode 100644 data/Приёмник.png create mode 100644 data/Приёмник.png.import create mode 100644 data/Состояние РЭС 2.png create mode 100644 data/Состояние РЭС 2.png.import create mode 100644 data/Состояние РЭС 4.png create mode 100644 data/Состояние РЭС 4.png.import create mode 100644 data/Угловой квадрат3.png create mode 100644 data/Угловой квадрат3.png.import create mode 100644 data/разъединение.png.import create mode 100644 data/связь.png create mode 100644 data/связь.png.import create mode 100644 data/соединение.png.import create mode 100644 scenes/контроль/panel_container.gd create mode 100644 scenes/контроль/panel_container.gd.uid diff --git a/data/2разъединение.png.import b/data/2разъединение.png.import new file mode 100644 index 00000000..589b5291 --- /dev/null +++ b/data/2разъединение.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cwfdur4we51wo" +path="res://.godot/imported/2разъединение.png-a5736ca86ce553a4d764d6fc09130f8a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/2разъединение.png" +dest_files=["res://.godot/imported/2разъединение.png-a5736ca86ce553a4d764d6fc09130f8a.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/data/2соединение.png.import b/data/2соединение.png.import new file mode 100644 index 00000000..1a276ba5 --- /dev/null +++ b/data/2соединение.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bajrbvv7twq7m" +path="res://.godot/imported/2соединение.png-b014241f07700023165f09936094354c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/2соединение.png" +dest_files=["res://.godot/imported/2соединение.png-b014241f07700023165f09936094354c.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/data/Передатчик.png b/data/Передатчик.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3c5411553f8a8bb97a4367b7ebfc383a439d9a GIT binary patch literal 5064 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 M07*qoM6N<$f@A}H-~a#s literal 0 HcmV?d00001 diff --git a/data/Состояние РЭС 2.png.import b/data/Состояние РЭС 2.png.import new file mode 100644 index 00000000..913a1b0b --- /dev/null +++ b/data/Состояние РЭС 2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://6ar7sux3vcv1" +path="res://.godot/imported/Состояние РЭС 2.png-7acd4e8d9bd67ea07a3eadee4b22c22d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/Состояние РЭС 2.png" +dest_files=["res://.godot/imported/Состояние РЭС 2.png-7acd4e8d9bd67ea07a3eadee4b22c22d.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/data/Состояние РЭС 4.png b/data/Состояние РЭС 4.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd2df5168cb44722c9d4471c3c296e3e84f66d1 GIT binary patch literal 4176 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 literal 0 HcmV?d00001 diff --git a/data/Угловой квадрат3.png.import b/data/Угловой квадрат3.png.import new file mode 100644 index 00000000..3f5b163a --- /dev/null +++ b/data/Угловой квадрат3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://docnrxrm2f022" +path="res://.godot/imported/Угловой квадрат3.png-7973b0c96861e98d72e8e1ea32d59204.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/Угловой квадрат3.png" +dest_files=["res://.godot/imported/Угловой квадрат3.png-7973b0c96861e98d72e8e1ea32d59204.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/data/разъединение.png.import b/data/разъединение.png.import new file mode 100644 index 00000000..04537bf9 --- /dev/null +++ b/data/разъединение.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0wa068b6gl1y" +path="res://.godot/imported/разъединение.png-285b8ee2e2b500484829beae0ee4e16b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/разъединение.png" +dest_files=["res://.godot/imported/разъединение.png-285b8ee2e2b500484829beae0ee4e16b.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/data/связь.png b/data/связь.png new file mode 100644 index 0000000000000000000000000000000000000000..0459d55af0ecf16fec04ede05d0601a0d568a564 GIT binary patch literal 1386 zcmYL|4^WbK7{`Br{FOgZ#*iq;wzlqcLRn$t@_p6NGN)d(ST5fXwR5get8Hb1AWCIP zmuHe~fo<6qD`tOg?kWjgS(TLQ={0bMMlZ3IzFJJ1?`37(~lP zkm)FoDxz+s*q0S$+;UeZ!P!LmEKYIp0Y?AEcB^$N$TsK?3XYBFlw7T528AwUcjU_D zDg&neCfiLREoVN_GuSmVm2FSJIT!!LKbr7z>D|`WGMTXQNPcwX#M8btWm%KUGUN!N zuquLZIGj%&MQsYOq8(zj2o~uG($3bhP%Jtr9LGs1^~VG$k{MOF0Q~Aot|T2c)EYu- z4ThUF8apB}YC+p`r4m&SHuE`U+vzV+#(gH0N}Vz;gMyiXZ9IE#AHP5P;%tpp;dp|zySYtnmwJatO{P=ywRv%BJ009Yp?U9LJepn+Y zc4C>Ygb!}u9*xd>w8;LLKcJ|$vsZ8Vq9AU7G~5C9rVogUC7WX2B*S!!zCCq->jwJY z%x1IVqi~^2)Q>6&ZY64Esa+-L+9ad5^^TV(Kj9-W%>r8iF6*1BxFg7V6YEmr&q9kT zykZrWwcK(_l`raOP?n%MW5X{ZTb^b%vrEv)d)|2=ly1H1EHS~~*eTy?EjYIuhm-d$ zB8uAzogS+TIL(xlcf!NF<4JesBYTu6G$coA1JMiZ7%xmX`A2_EmIu+e2(qOVA~tNzJz&0*ha$aPVksC9pzHeaP)YsH)VbGth`3=vU1;0os*6wYQ>TU_52ewdb;*J_h!sW@C)2l4HS5Ih5@E^$ z?zdTi+o8^mOZ^*@CWD3}%wHv}pyrUxx`bPn?%0B;YfIs3T&jfY8)hT`(n=^tsiT(i zplh2oHUAn1=DLg6AXm6!Tmw1^orS!!ydkh7g3QpO)Ol>*Go5E3xm9(H#D%I1lkq-( zJowWN^$zDc;x`0?W;S+K)lOf9=@M8m=v4&~$%TS55AuwS6J5N-rWBx=Km2;-p%SMD z(}TZyytH%*5Bw7iT{c8)qM!Oc_9U`=fq8RW-cHAlv}0#5PWCUZ#3p?2V!!gVG`x$s z0YT(#4F&s=`l_nP?;u;CCANI#M6P12Yb=xJUa!xo&am3BOCFIg>-y7lAtPw$WM=&6 z+g{rqe~>NjZYZpqC6CTKQys8l>kH5I{Z2p6KJR)vO<{iuOV5%iukdrAn@6u?&6Etg z@%b&%;K^g%%T|%Du)lm*8ITFPSVY-FWr4=(vCbudTf?#c7ajP<0pcLzH1+!X=lpb& L5>nzXz=-;P;u<%t literal 0 HcmV?d00001 diff --git a/data/связь.png.import b/data/связь.png.import new file mode 100644 index 00000000..e1367cb1 --- /dev/null +++ b/data/связь.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blx6c1o1nogks" +path="res://.godot/imported/связь.png-dc3eae4c11f71101d4ba94487cecfaaa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/связь.png" +dest_files=["res://.godot/imported/связь.png-dc3eae4c11f71101d4ba94487cecfaaa.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/data/соединение.png.import b/data/соединение.png.import new file mode 100644 index 00000000..a6c34c4f --- /dev/null +++ b/data/соединение.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bf1e2xlk3x1aw" +path="res://.godot/imported/соединение.png-aac09e55b0c5d57ef3c31c34daaf336b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://data/соединение.png" +dest_files=["res://.godot/imported/соединение.png-aac09e55b0c5d57ef3c31c34daaf336b.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/project.godot b/project.godot index dc2a071e..c12e1b26 100644 --- a/project.godot +++ b/project.godot @@ -38,6 +38,64 @@ config/settings_path="user://settings.json" config/unit_bpo_request_period=20.0 interfer/emit_color=Color(0.9, 0.1, 0.25, 0.5) interfer/closed_sectors=Color(0, 0, 0, 1) +"config/Адрес АФСП левого борта"="" +"config/Адрес АФСП правого борта"="" +"config/Адрес БПО левого борта"="" +"config/Адрес БПО правого борта"="" +"config/Виртуальная клавиатура"=false +"config/Включить работу по своим целям"=true +"config/Внешнее указание Трасса"=false +"config/Внешнее управление"=false +"config/Кнопка «JTIDS»"=false +"config/Кнопка «К1»"=false +"config/Кнопка «КУПД»"=false +"config/Кнопка «ЛЧМ-1»"=false +"config/Кнопка «МЧМ-1»"=false +"config/Кнопка «ОЗП-1»"=false +"config/Кнопка «ОРН-И1»"=false +"config/Кнопка «ОРН-М2»"=false +"config/Кнопка «ОРН»"=false +"config/Кнопка «ПД-М2»"=false +"config/Кнопка «ПД-М4»"=false +"config/Кнопка «ПД-М4С»"=false +"config/Кнопка «ПД-ЧМ»"=false +"config/Кнопка «Подавление»"=false +"config/Кнопка «СВ-И1»"=false +"config/Кнопка «СВ-М2»"=false +"config/Ограниченный режим"=false +"config/Отладка контроля"=false +"config/Период опроса состояния АФСП, секунды"="" +"config/Период опроса состояния БПО, секунды"="" +"config/Скрыть вкладку ЭМС 2"=true +"config/Список своих протоколов"="" +"config/Текущая версия ПО УАРЭП"="master 3bff1cd Tue Nov 4 15:33:24 2025 +0300" +"config/Цвет кнопки \"Подавление\""="[0.972549021244049,0.0117647061124444,0.423529416322708,1.0]" +"config/Цвет схемы"="[0.972549021244049,0.0117647061124444,0.0274509806185961,1.0]" +"config/Цвет фона схемы"="[0.0941176488995552,0.149019613862038,1.0,1.0]" +"config/Шаблон адреса сервера карт"="https://tile.openstreetmap.org/{z}/{x}/{y}.png" +"config/навигация"=["*", 60000, true, true] +"config/уарэп-5п28"=["127.0.0.1", 50777] +"config/уарэп-капсрпб"=["127.0.0.1", "127.0.0.1", 42023, 42022, false, true] +"config/уарэп-спт25-1"=["/home/user/tty0", 0, 19200, "N", 8, 1] +"config/уарэп-спт25-2"=["/home/user/tty1", 0, 19200, "N", 8, 1] +"config/уарэп-трасса"=["192.168.11.34", "192.168.11.105", 50200, 10004, false, true] +"config/уарэп-щ3"=["/home/user/tty3", 7, 19200, "N", 8, 1, 50000] +"config/уарэп-эмс"=["10.1.1.52", 50052, false, false] +"config/уарэп-яу07-1в"=["10.1.1.12", 50012, false, false] +"config/уарэп-яу07-1к"=["10.1.1.13", 50013, false, false] +"config/уарэп-яу07-1н"=["10.1.1.11", 50011, false, false] +"config/уарэп-яу07-2в"=["10.1.1.22", 50022, false, false] +"config/уарэп-яу07-2к"=["10.1.1.23", 50023, false, false] +"config/уарэп-яу07-2н"=["10.1.1.21", 50021, false, false] +"config/уарэп-яу07-3в"=["10.1.1.32", 50032, false, false] +"config/уарэп-яу07-3к"=["10.1.1.33", 50033, false, false] +"config/уарэп-яу07-3н"=["10.1.1.31", 50031, false, false] +"config/уарэп-яу07-4в"=["10.1.1.42", 50042, false, false] +"config/уарэп-яу07-4к"=["10.1.1.43", 50043, false, false] +"config/уарэп-яу07-4н"=["10.1.1.41", 50041, false, false] +"config/уарэп-яу07-общий"=["*", 50000, true, true] +"config/уарэп-яу07-частный"=["10.1.1.253", 50253, false, true] +config/="[0.215686276555061,0.976470589637756,1.0,1.0]" [autoload] diff --git a/scenes/контроль/connect_pribor.gd b/scenes/контроль/connect_pribor.gd index 4f1cf51e..7f620c0d 100644 --- a/scenes/контроль/connect_pribor.gd +++ b/scenes/контроль/connect_pribor.gd @@ -3,5 +3,7 @@ extends AnimatedSprite2D ## Изменяет состояние значка "прибор на связи" func set_val(val: bool): set_frame(val) - if val: modulate = Color(0.3, 1.0, 0.3, 1) - else: modulate = Color(0.5, 0.5, 0.5, 1) + if val: + modulate = Color(0.3, 1.0, 0.3, 1) + else: + modulate = Color(0.5, 0.5, 0.5, 1) diff --git a/scenes/контроль/panel_container.gd b/scenes/контроль/panel_container.gd new file mode 100644 index 00000000..a3477ccd --- /dev/null +++ b/scenes/контроль/panel_container.gd @@ -0,0 +1,11 @@ +extends PanelContainer + +## Изменяет состояние значка "прибор на связи" +func set_val(val: bool): + $connect_pribor.set_frame(val) + if val: + $connect_pribor.modulate = Color(0.3, 1.0, 0.3, 1) # зелёный + set_tooltip_text("Есть связь") + else: + $connect_pribor.modulate = modulate # изначальный + set_tooltip_text("Нет связи") diff --git a/scenes/контроль/panel_container.gd.uid b/scenes/контроль/panel_container.gd.uid new file mode 100644 index 00000000..028bdafd --- /dev/null +++ b/scenes/контроль/panel_container.gd.uid @@ -0,0 +1 @@ +uid://j16hg3u2uvu5 diff --git a/scenes/контроль/внешний.gd b/scenes/контроль/внешний.gd index 0596fd29..b9bf8d10 100644 --- a/scenes/контроль/внешний.gd +++ b/scenes/контроль/внешний.gd @@ -9,4 +9,4 @@ func _ready() -> void: func on_line_changed(unit_instance: unit.Unit): - $connect_pribor.set_val(unit_instance.online) + $panel_pribor.set_val(unit_instance.online) diff --git a/scenes/контроль/кнопка-прибора.gd b/scenes/контроль/кнопка-прибора.gd index b7cbe142..a6359dd2 100644 --- a/scenes/контроль/кнопка-прибора.gd +++ b/scenes/контроль/кнопка-прибора.gd @@ -10,6 +10,8 @@ func _ready(): focus_mode = Control.FOCUS_ALL connect('focus_entered', _on_focus_entered) connect('focus_exited', _on_focus_exited) + ProjectSettings.connect("settings_changed", Callable(self, "_on_settings_changed")) + _on_settings_changed() func _enter_tree() -> void: @@ -47,8 +49,17 @@ func enter_press(): func _on_settings_changed(): if not is_inside_tree(): return - var white_color = ProjectSettings.get_setting('Схема прибора. Белый цвет', Color.LIGHT_GRAY) - var black_color = ProjectSettings.get_setting('Схема прибора. Чёрный цвет', Color.BLACK) + + var white_color = ProjectSettings.get_setting('application/config/%s' % 'Цвет фона схемы', Color.DIM_GRAY) + var json_col_w = ProjectSettings.get_setting('application/config/%s' % 'Цвет фона схемы', '[0.0, 0.0, 0.0, 0.0]') + var arr_col_w = JSON.parse_string(json_col_w) + white_color = Color(arr_col_w[0], arr_col_w[1], arr_col_w[2], arr_col_w[3]) if arr_col_w else Color.DIM_GRAY + + var black_color = ProjectSettings.get_setting('application/config/%s' % 'Цвет схемы', Color.WHITE_SMOKE) + var json_col_b = ProjectSettings.get_setting('application/config/%s' % 'Цвет схемы', '[1.0, 1.0, 1.0, 1.0]') + var arr_col_b = JSON.parse_string(json_col_b) + black_color = Color(arr_col_b[0], arr_col_b[1], arr_col_b[2], arr_col_b[3]) if arr_col_b else Color.WHITE_SMOKE + $pic_functional.material.set('shader_parameter/white', white_color) $pic_functional.material.set('shader_parameter/black', black_color) diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index 5f2c8459..f94ad3b6 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -1,16 +1,15 @@ -[gd_scene load_steps=33 format=3 uid="uid://lwmw4egynmd1"] +[gd_scene load_steps=34 format=3 uid="uid://lwmw4egynmd1"] [ext_resource type="Texture2D" uid="uid://bar8k5qef7kch" path="res://data/УФ.png" id="2_0nvm1"] [ext_resource type="Script" uid="uid://q3gmpsqspjfp" path="res://scenes/контроль/внешний.gd" id="2_8r80x"] [ext_resource type="Texture2D" uid="uid://bb80aigvv648i" path="res://data/кнопка-внешние-0.png" id="2_oysma"] [ext_resource type="Script" uid="uid://bj4nndrurbunl" path="res://scenes/контроль/кнопка-прибора.gd" id="3_4pt7j"] +[ext_resource type="Texture2D" uid="uid://blx6c1o1nogks" path="res://data/связь.png" id="3_8tygn"] [ext_resource type="Texture2D" uid="uid://dkqlvd750pplc" path="res://data/СПТ.png" id="3_hhadv"] [ext_resource type="Texture2D" uid="uid://b0o8jhb5jbrev" path="res://data/рамка-1.png" id="4_rasbe"] -[ext_resource type="Texture2D" uid="uid://bdlbqs88bki8x" path="res://data/connect-a.png" id="5_c621m"] [ext_resource type="Texture2D" uid="uid://d2jxmtd6n5jd1" path="res://data/Щ3.png" id="5_kvnex"] [ext_resource type="Texture2D" uid="uid://bos68thpqqvn" path="res://data/ПРД.png" id="6_i1yfn"] [ext_resource type="Texture2D" uid="uid://c6nve6f8sfyj2" path="res://data/состояние-исправности-0.png" id="7_6j01w"] -[ext_resource type="Texture2D" uid="uid://u3tnejvpm8it" path="res://data/disconnect-a.png" id="8_gs2be"] [ext_resource type="Texture2D" uid="uid://dnreyfh3cd1k2" path="res://data/состояние-исправности-1.png" id="8_isjua"] [ext_resource type="Shader" uid="uid://83fx15q1xlid" path="res://shaders/two-color.gdshader" id="9_71ec4"] [ext_resource type="Texture2D" uid="uid://b4isaggma6q3" path="res://data/Грани22.png" id="9_iqgf5"] @@ -25,6 +24,7 @@ [ext_resource type="Texture2D" uid="uid://c3cyog3gy24ft" path="res://data/У-ЭП.png" id="16_gjf0t"] [ext_resource type="Script" uid="uid://xjs7owe2iexn" path="res://scenes/контроль/control_prd.gd" id="18_lbx5w"] [ext_resource type="Texture2D" uid="uid://b2vf7en1jj8dv" path="res://data/У-РЭП-РПД-В.png" id="20_l5wui"] +[ext_resource type="Script" uid="uid://j16hg3u2uvu5" path="res://scenes/контроль/panel_container.gd" id="21_l5wui"] [ext_resource type="Texture2D" uid="uid://cllxcfa130vqu" path="res://data/УА-РЭП.png" id="22_1s34a"] [sub_resource type="GDScript" id="GDScript_iqgf5"] @@ -88,7 +88,7 @@ func _ready(): var header_text = PRIBORS_RES[k][1] pribor_node.set_button_group(group) pribor_node.connect('button_down', Callable(self, 'on_pribor_press').bind(pribor_path, header_text, pribor_node)) - var conn_node = pribor_node.get_node('connect_pribor') + var conn_node = pribor_node.get_node('panel_pribor') var unit_names = pribor_node.get_meta('unit_name', []) var pribor_proc = pribor_node.get_meta('online_proc', '') if pribor_proc == '': @@ -114,7 +114,7 @@ func _ready(): for pribor_node in get_tree().get_nodes_in_group('pribor_pics'): var unit_name = pribor_node.get_meta('unit_name') var unit_instance: = network.get_unit_instance(unit_name) - var conn_node: = pribor_node.get_node('connect_pribor') + var conn_node: = pribor_node.get_node('panel_pribor') unit_instance.connect('line_changed', on_line_changed.bind(conn_node, unit_name)) @@ -255,14 +255,17 @@ func _on_gui_input(event: InputEvent) -> void: $frame_button/chk_show_functional.disabled = true " +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4plr2"] +bg_color = Color(0.176471, 0.176471, 0.176471, 0) + [sub_resource type="SpriteFrames" id="SpriteFrames_foasq"] animations = [{ "frames": [{ "duration": 1.0, -"texture": ExtResource("8_gs2be") +"texture": ExtResource("3_8tygn") }, { "duration": 1.0, -"texture": ExtResource("5_c621m") +"texture": ExtResource("3_8tygn") }], "loop": true, "name": &"default", @@ -271,8 +274,8 @@ animations = [{ [sub_resource type="ShaderMaterial" id="ShaderMaterial_71ec4"] shader = ExtResource("9_71ec4") -shader_parameter/white = Vector3(0, 0, 0) -shader_parameter/black = Vector3(1, 1, 1) +shader_parameter/white = Vector3(0.14, 0.13, 0.13) +shader_parameter/black = Vector3(0.95, 0.55, 0.05) shader_parameter/gamma = 2.0 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6hcgs"] @@ -336,12 +339,24 @@ text = "КАПС РПБ" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="capsrpb"] +[node name="panel_pribor" type="PanelContainer" parent="capsrpb"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 16.0 +offset_top = -36.0 +offset_right = 107.0 +offset_bottom = 55.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="capsrpb/panel_pribor"] light_mask = 3 -position = Vector2(56, -4) -scale = Vector2(2.6, 2.6) +position = Vector2(45.7142, 45.7143) +scale = Vector2(2.113, 2.1) sprite_frames = SubResource("SpriteFrames_foasq") -script = ExtResource("11_u7tym") +frame_progress = 0.72355 [node name="5p28" type="TextureRect" parent="." groups=["pribor_pics"]] editor_description = "Кнопка для отображения внешних соединений." @@ -370,13 +385,24 @@ text = "5П28" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="5p28"] +[node name="panel_pribor" type="PanelContainer" parent="5p28"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 16.0 +offset_top = -36.0 +offset_right = 107.0 +offset_bottom = 55.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="5p28/panel_pribor"] light_mask = 3 -position = Vector2(52, -4) -scale = Vector2(2.6, 2.6) +position = Vector2(45.7142, 45.7143) +scale = Vector2(2.113, 2.1) sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 -script = ExtResource("11_u7tym") [node name="akng" type="TextureRect" parent="." groups=["pribor_pics"]] editor_description = "Кнопка для отображения внешних соединений." @@ -405,13 +431,24 @@ text = "АКНГ" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="akng"] +[node name="panel_pribor" type="PanelContainer" parent="akng"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 16.0 +offset_top = -36.0 +offset_right = 107.0 +offset_bottom = 55.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="akng/panel_pribor"] light_mask = 3 -position = Vector2(47.9999, -4) -scale = Vector2(2.6, 2.6) +position = Vector2(45.7142, 45.7143) +scale = Vector2(2.113, 2.1) sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 -script = ExtResource("11_u7tym") [node name="maps" type="TextureRect" parent="." groups=["pribor_pics"]] editor_description = "Кнопка для отображения внешних соединений." @@ -440,13 +477,24 @@ text = "Карты" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="maps"] +[node name="panel_pribor" type="PanelContainer" parent="maps"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 16.0 +offset_top = -36.0 +offset_right = 107.0 +offset_bottom = 55.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="maps/panel_pribor"] light_mask = 3 -position = Vector2(47.9999, -4) -scale = Vector2(2.6, 2.6) +position = Vector2(45.7142, 45.7143) +scale = Vector2(2.113, 2.1) sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 -script = ExtResource("11_u7tym") [node name="trassa" type="TextureRect" parent="." groups=["pribor_pics"]] editor_description = "Кнопка для отображения внешних соединений." @@ -475,13 +523,24 @@ text = "Трасса" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="trassa"] +[node name="panel_pribor" type="PanelContainer" parent="trassa"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 16.0 +offset_top = -36.0 +offset_right = 107.0 +offset_bottom = 55.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="trassa/panel_pribor"] light_mask = 3 -position = Vector2(47.9999, -4) -scale = Vector2(2.6, 2.6) +position = Vector2(45.7142, 45.7143) +scale = Vector2(2.113, 2.1) sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 -script = ExtResource("11_u7tym") [node name="pribor_prd_n_1" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." @@ -527,14 +586,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1"] -light_mask = 3 -position = Vector2(35, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_1"] visible = false layout_mode = 0 @@ -570,6 +621,25 @@ offset_bottom = 830.0 scale = Vector2(0.97094, 0.97094) texture = ExtResource("9_qe1go") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_1"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 27.0 +offset_top = -19.0 +offset_right = 50.0 +offset_bottom = 5.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_1/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_uf" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -613,14 +683,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uf"] -light_mask = 3 -position = Vector2(52, -6) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_uf"] visible = false z_index = 1 @@ -656,6 +718,25 @@ texture_progress = ExtResource("10_lbx5w") tint_under = Color(1, 1, 1, 0.419608) tint_progress = Color(0.890196, 0.486275, 0.196078, 1) +[node name="panel_pribor" type="PanelContainer" parent="pribor_uf"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 44.0 +offset_top = -22.0 +offset_right = 67.0 +offset_bottom = 2.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uf/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_rtr" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -710,14 +791,6 @@ text = "РТР" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_rtr"] -light_mask = 3 -position = Vector2(53, -15) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_rtr"] visible = false z_index = 1 @@ -730,6 +803,25 @@ offset_bottom = 595.0 scale = Vector2(0.792688, 0.792688) texture = ExtResource("13_32yvq") +[node name="panel_pribor" type="PanelContainer" parent="pribor_rtr"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 44.0 +offset_top = -26.0 +offset_right = 67.0 +offset_bottom = -2.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_rtr/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_afsp_1" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -788,14 +880,6 @@ text = "АФСП 1" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_1"] -light_mask = 3 -position = Vector2(415, -40) -scale = Vector2(3, 3) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_afsp_1"] visible = false z_index = 1 @@ -808,6 +892,25 @@ offset_bottom = 93.9999 scale = Vector2(3.96323, 3.96323) texture = ExtResource("13_32yvq") +[node name="panel_pribor" type="PanelContainer" parent="pribor_afsp_1"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 375.0 +offset_top = -105.0 +offset_right = 490.0 +offset_bottom = 9.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_1/panel_pribor"] +light_mask = 3 +position = Vector2(57.1431, 57.1429) +scale = Vector2(3, 2.981) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_afsp_2" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -867,14 +970,6 @@ text = "АФСП 2" horizontal_alignment = 1 vertical_alignment = 1 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_2"] -light_mask = 3 -position = Vector2(415, -40) -scale = Vector2(3, 3) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_afsp_2"] visible = false z_index = 1 @@ -887,6 +982,25 @@ offset_bottom = 89.0001 scale = Vector2(3.96409, 4.54663) texture = ExtResource("13_32yvq") +[node name="panel_pribor" type="PanelContainer" parent="pribor_afsp_2"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 375.0 +offset_top = -105.0 +offset_right = 490.0 +offset_bottom = 9.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_afsp_2/panel_pribor"] +light_mask = 3 +position = Vector2(57.1431, 57.1429) +scale = Vector2(3, 2.981) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_uyep" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -930,14 +1044,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uyep"] -light_mask = 3 -position = Vector2(45, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.872305 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_uyep"] visible = false z_index = 1 @@ -950,6 +1056,25 @@ offset_bottom = 764.0 scale = Vector2(0.736875, 0.814493) texture = ExtResource("16_gjf0t") +[node name="panel_pribor" type="PanelContainer" parent="pribor_uyep"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 37.0 +offset_top = -22.0 +offset_right = 60.0 +offset_bottom = 2.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_uyep/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_v_2" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -994,14 +1119,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_2"] -light_mask = 3 -position = Vector2(37, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_2"] visible = false layout_mode = 0 @@ -1037,6 +1154,25 @@ offset_bottom = 328.0 scale = Vector2(0.977411, 0.977411) texture = ExtResource("20_l5wui") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_2"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 29.0 +offset_top = -21.0 +offset_right = 52.0 +offset_bottom = 3.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_2/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_n_2" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1083,14 +1219,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_2"] -light_mask = 3 -position = Vector2(37, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_prd_n_2"] visible = false z_index = 1 @@ -1126,6 +1254,25 @@ texture_progress = ExtResource("10_lbx5w") tint_under = Color(1, 1, 1, 0.419608) tint_progress = Color(0.890196, 0.486275, 0.196078, 1) +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_2"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 29.0 +offset_top = -21.0 +offset_right = 52.0 +offset_bottom = 3.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_2/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_k_2" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1170,14 +1317,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_2"] -light_mask = 3 -position = Vector2(37, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_prd_k_2"] visible = false z_index = 1 @@ -1213,6 +1352,25 @@ texture_progress = ExtResource("10_lbx5w") tint_under = Color(1, 1, 1, 0.419608) tint_progress = Color(0.890196, 0.486275, 0.196078, 1) +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_2"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 29.0 +offset_top = -21.0 +offset_right = 52.0 +offset_bottom = 3.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_2/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_v_3" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1257,14 +1415,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_3"] -light_mask = 3 -position = Vector2(35, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_3"] visible = false layout_mode = 0 @@ -1300,6 +1450,25 @@ offset_bottom = 207.0 scale = Vector2(0.975409, 0.975409) texture = ExtResource("20_l5wui") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_3"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 27.0 +offset_top = -20.0 +offset_right = 50.0 +offset_bottom = 4.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_3/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_n_3" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1344,14 +1513,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_3"] -light_mask = 3 -position = Vector2(33, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_3"] visible = false layout_mode = 0 @@ -1387,6 +1548,25 @@ offset_bottom = 219.0 scale = Vector2(0.969291, 0.969291) texture = ExtResource("9_qe1go") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_3"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 25.0 +offset_top = -21.0 +offset_right = 48.0 +offset_bottom = 3.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_3/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_k_3" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1431,14 +1611,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_3"] -light_mask = 3 -position = Vector2(35, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_3"] visible = false layout_mode = 0 @@ -1474,6 +1646,25 @@ offset_bottom = 361.0 scale = Vector2(0.882165, 0.896739) texture = ExtResource("16_32yvq") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_3"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 27.0 +offset_top = -20.0 +offset_right = 50.0 +offset_bottom = 4.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_3/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_v_1" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1518,14 +1709,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_1"] -light_mask = 3 -position = Vector2(34, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="pic_functional" type="TextureRect" parent="pribor_prd_v_1"] visible = false z_index = 1 @@ -1561,6 +1744,24 @@ texture_progress = ExtResource("10_lbx5w") tint_under = Color(1, 1, 1, 0.419608) tint_progress = Color(0.890196, 0.486275, 0.196078, 1) +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_1"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 26.0 +offset_top = -20.0 +offset_right = 42.0 +offset_bottom = -4.0 +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_1/panel_pribor"] +light_mask = 3 +position = Vector2(8, 8) +scale = Vector2(0.4, 0.4) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_k_1" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1605,14 +1806,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_1"] -light_mask = 3 -position = Vector2(35, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_1"] visible = false layout_mode = 0 @@ -1648,6 +1841,25 @@ offset_bottom = 973.0 scale = Vector2(0.883479, 0.883479) texture = ExtResource("16_32yvq") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_1"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 27.0 +offset_top = -21.0 +offset_right = 50.0 +offset_bottom = 3.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_1/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_v_4" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1691,14 +1903,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_4"] -light_mask = 3 -position = Vector2(41, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_v_4"] visible = false layout_mode = 0 @@ -1734,6 +1938,25 @@ offset_bottom = 664.0 scale = Vector2(0.976707, 0.976707) texture = ExtResource("20_l5wui") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_v_4"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 33.0 +offset_top = -21.0 +offset_right = 56.0 +offset_bottom = 3.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_v_4/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_n_4" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1777,14 +2000,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_4"] -light_mask = 3 -position = Vector2(40, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_n_4"] visible = false layout_mode = 0 @@ -1820,6 +2035,25 @@ offset_bottom = 336.0 scale = Vector2(0.968111, 0.968111) texture = ExtResource("9_qe1go") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_n_4"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 32.0 +offset_top = -20.0 +offset_right = 55.0 +offset_bottom = 4.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_n_4/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="pribor_prd_k_4" type="TextureButton" parent="." groups=["pribor_buttons"]] editor_description = "Кнопка для выбора прибора." layout_mode = 0 @@ -1863,14 +2097,6 @@ patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 -[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_4"] -light_mask = 3 -position = Vector2(39, -10) -scale = Vector2(0.625, 0.625) -sprite_frames = SubResource("SpriteFrames_foasq") -frame_progress = 0.72355 -script = ExtResource("11_u7tym") - [node name="control_progress" type="TextureProgressBar" parent="pribor_prd_k_4"] visible = false layout_mode = 0 @@ -1906,6 +2132,25 @@ offset_bottom = 648.0 scale = Vector2(0.879295, 0.879295) texture = ExtResource("16_32yvq") +[node name="panel_pribor" type="PanelContainer" parent="pribor_prd_k_4"] +custom_minimum_size = Vector2(10, 10) +layout_mode = 0 +offset_left = 31.0 +offset_top = -20.0 +offset_right = 54.0 +offset_bottom = 4.0 +scale = Vector2(0.7, 0.7) +tooltip_text = "Нет связи" +theme_override_styles/panel = SubResource("StyleBoxFlat_4plr2") +script = ExtResource("21_l5wui") + +[node name="connect_pribor" type="AnimatedSprite2D" parent="pribor_prd_k_4/panel_pribor"] +light_mask = 3 +position = Vector2(11.4285, 12.8571) +scale = Vector2(0.6, 0.596) +sprite_frames = SubResource("SpriteFrames_foasq") +frame_progress = 0.72355 + [node name="txr_legend0" type="TextureRect" parent="."] layout_mode = 0 offset_left = 316.0 @@ -1998,17 +2243,17 @@ alignment = 1 [node name="connect_legend0" type="AnimatedSprite2D" parent="."] light_mask = 3 -position = Vector2(1219, 1151) +position = Vector2(1312, 1151) scale = Vector2(0.65, 0.65) sprite_frames = SubResource("SpriteFrames_foasq") frame_progress = 0.72355 script = ExtResource("11_u7tym") [node name="Label" type="Label" parent="connect_legend0"] -offset_left = 36.9231 -offset_top = -15.3846 -offset_right = 103.923 -offset_bottom = 3.61538 +offset_left = 27.6924 +offset_top = -16.923 +offset_right = 94.6923 +offset_bottom = 2.07697 scale = Vector2(1.54, 1.54) text = "Отключен" metadata/_edit_use_anchors_ = true @@ -2016,17 +2261,17 @@ metadata/_edit_use_anchors_ = true [node name="connect_legend1" type="AnimatedSprite2D" parent="."] self_modulate = Color(0, 1, 0, 1) light_mask = 3 -position = Vector2(975, 1152) +position = Vector2(1072, 1151) scale = Vector2(0.65, 0.65) sprite_frames = SubResource("SpriteFrames_foasq") frame = 1 script = ExtResource("11_u7tym") [node name="Label" type="Label" parent="connect_legend1"] -offset_left = 36.9231 -offset_top = -13.8462 -offset_right = 99.9231 -offset_bottom = 5.15385 +offset_left = 27.6923 +offset_top = -16.9231 +offset_right = 90.6923 +offset_bottom = 2.0769 scale = Vector2(1.54, 1.54) text = "На связи" metadata/_edit_use_anchors_ = true diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index f01526bd..90003c83 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -63,7 +63,10 @@ const SETTING_TABLE = [ ['уарэп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'], ['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'], ['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], - ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ] ] + ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ], + ['Цвет фона схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет фона'], + ['Цвет схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет схемы '] ] + ## TODO: Придумать как избавиться от индексов ## Индексы строк таблицы. @@ -76,6 +79,8 @@ const DEBAG_CONTROL = 21 ## Строка - Отладка контроля const COMMIT = 22 ## Строка - Версия УАРЭП const GOS_BTN = 52 ## Разрешить работу по своим целям const COLOR_BTN_ACT = 54 ## Цвет кнопки "Подавление" +const COLOR_WHITE = 55 ## Цвет фона схемы +const COLOR_BLACK = 56 ## Цвет схемы var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки @@ -249,6 +254,37 @@ func button_settings(): var arr_col = JSON.parse_string(json_col) color_btn_act.color = Color(arr_col[0], arr_col[1], arr_col[2], arr_col[3]) if arr_col else Color.WHITE color_btn_act.text = JSON.stringify(arr_col) + var color_white = $scroll_set/table.get_node2(1, COLOR_WHITE) + color_white.connect('popup_closed', on_color_closed_w.bind(color_white)) + var json_col_w = ProjectSettings.get_setting('application/config/%s' % 'Цвет фона схемы', '[0.0, 0.0, 0.0, 0.0]') + var arr_col_w = JSON.parse_string(json_col_w) + color_white.color = Color(arr_col_w[0], arr_col_w[1], arr_col_w[2], arr_col_w[3]) if arr_col_w else Color.DIM_GRAY + color_white.text = JSON.stringify(arr_col_w) + var color_black = $scroll_set/table.get_node2(1, COLOR_BLACK) + color_black.connect('popup_closed', on_color_closed_b.bind(color_black)) + var json_col_b = ProjectSettings.get_setting('application/config/%s' % 'Цвет схемы', '[1.0, 1.0, 1.0, 1.0]') + var arr_col_b = JSON.parse_string(json_col_b) + color_black.color = Color(arr_col_b[0], arr_col_b[1], arr_col_b[2], arr_col_b[3]) if arr_col_b else Color.WHITE_SMOKE + color_black.text = JSON.stringify(arr_col_b) + + +func _update_theme_colors(): + var color_white = $scroll_set/table.get_node2(1, COLOR_WHITE) + var color_black = $scroll_set/table.get_node2(1, COLOR_BLACK) + on_color_closed_w(color_white) + on_color_closed_b(color_black) + + +func on_color_closed_w(color_white: ColorPickerButton): + var col_w = [color_white.color.r, color_white.color.g, color_white.color.b, color_white.color.a] + color_white.text = JSON.stringify(col_w) + ProjectSettings.set_setting('application/config/%s' % 'Цвет фона схемы', color_white.text) + + +func on_color_closed_b(color_black: ColorPickerButton): + var col_b = [color_black.color.r, color_black.color.g, color_black.color.b, color_black.color.a] + color_black.text = JSON.stringify(col_b) + ProjectSettings.set_setting('application/config/%s' % 'Цвет схемы', color_black.text) func on_color_closed(color_btn_act: ColorPickerButton): diff --git a/scenes/эмс/эмс.tscn b/scenes/эмс/эмс.tscn index 32717b0e..d88aa9a8 100644 --- a/scenes/эмс/эмс.tscn +++ b/scenes/эмс/эмс.tscn @@ -4,8 +4,8 @@ [ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat/button-flat.tscn" id="2_eju8r"] [ext_resource type="Texture2D" uid="uid://csnts8f155sf7" path="res://data/save1.png" id="3_onafb"] [ext_resource type="Texture2D" uid="uid://o8mam0a060d8" path="res://data/load1.png" id="4_afjfs"] -[ext_resource type="Texture2D" uid="uid://bdlbqs88bki8x" path="res://data/connect-a.png" id="5_2nrut"] -[ext_resource type="Texture2D" uid="uid://u3tnejvpm8it" path="res://data/disconnect-a.png" id="6_g3q7m"] +[ext_resource type="Texture2D" uid="uid://bdlbqs88bki8x" path="res://data/connect-a.png" id="5_wk8og"] +[ext_resource type="Texture2D" uid="uid://u3tnejvpm8it" path="res://data/disconnect-a.png" id="6_1fbmy"] [ext_resource type="Script" uid="uid://c5pq0hbrij34d" path="res://table/table.gd" id="8_qcl30"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mu34x"] @@ -35,30 +35,30 @@ modulate_color = Color(0.8, 0.533333, 0.27451, 1) texture = ExtResource("4_afjfs") [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_o7qii"] -texture = ExtResource("5_2nrut") +texture = ExtResource("5_wk8og") modulate_color = Color(0.8, 0.533333, 0.27451, 1) [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_mgr7r"] -texture = ExtResource("5_2nrut") +texture = ExtResource("5_wk8og") expand_margin_left = 3.0 expand_margin_top = 3.0 modulate_color = Color(0.8, 0.533333, 0.27451, 1) [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_hxhyh"] -texture = ExtResource("5_2nrut") +texture = ExtResource("5_wk8og") [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_tnihm"] -texture = ExtResource("6_g3q7m") +texture = ExtResource("6_1fbmy") modulate_color = Color(0.8, 0.533333, 0.27451, 1) [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_k1qbi"] -texture = ExtResource("6_g3q7m") +texture = ExtResource("6_1fbmy") expand_margin_left = 3.0 expand_margin_top = 3.0 modulate_color = Color(0.8, 0.533333, 0.27451, 1) [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_pe5pe"] -texture = ExtResource("6_g3q7m") +texture = ExtResource("6_1fbmy") [node name="ЭМС" type="Panel"] offset_right = 1598.0 @@ -126,10 +126,10 @@ theme_override_styles/normal = SubResource("StyleBoxTexture_3ytmi") [node name="btn_connect" type="Button" parent="."] layout_mode = 0 -offset_left = 627.0 -offset_top = 55.0 -offset_right = 679.0 -offset_bottom = 87.0 +offset_left = 716.0 +offset_top = 40.0 +offset_right = 763.0 +offset_bottom = 73.0 focus_mode = 0 theme_override_colors/icon_normal_color = Color(1, 1, 1, 1) theme_override_styles/focus = SubResource("StyleBoxTexture_o7qii") @@ -141,10 +141,10 @@ theme_override_styles/normal = SubResource("StyleBoxTexture_hxhyh") [node name="btn_disconnect" type="Button" parent="."] layout_mode = 0 -offset_left = 714.0 -offset_top = 741.0 -offset_right = 766.0 -offset_bottom = 775.0 +offset_left = 718.0 +offset_top = 735.0 +offset_right = 764.0 +offset_bottom = 764.0 focus_mode = 0 theme_override_colors/icon_normal_color = Color(1, 1, 1, 1) theme_override_styles/focus = SubResource("StyleBoxTexture_tnihm") diff --git a/scenes/эмс2/эмс2.tscn b/scenes/эмс2/эмс2.tscn index fd4280ec..f2431c79 100644 --- a/scenes/эмс2/эмс2.tscn +++ b/scenes/эмс2/эмс2.tscn @@ -3,17 +3,17 @@ [ext_resource type="Texture2D" uid="uid://hkcvl2waf63s" path="res://data/вид сверху.png" id="1_b7vcf"] [ext_resource type="Script" uid="uid://bvlqgv7aapebl" path="res://scenes/эмс2/эмс-тг.gd" id="1_l3ueu"] [ext_resource type="Texture2D" uid="uid://0w6q4vfst0ry" path="res://data/OP-63.png" id="3_8gk36"] -[ext_resource type="Texture2D" uid="uid://coxhivvc6uibs" path="res://data/Состояние РЭС 40.png" id="4_b3mus"] +[ext_resource type="Texture2D" uid="uid://b85f1ne2wrwhg" path="res://data/Состояние РЭС 4.png" id="4_b5v2s"] [ext_resource type="Texture2D" uid="uid://073el51yholj" path="res://data/454.png" id="4_nqi0i"] [ext_resource type="Texture2D" uid="uid://cckk3jk5r32bh" path="res://data/ГО.png" id="5_e7tlv"] -[ext_resource type="Texture2D" uid="uid://bu88bqq7hrotv" path="res://data/Состояние РЭС 20.png" id="5_yqn2y"] +[ext_resource type="Texture2D" uid="uid://6ar7sux3vcv1" path="res://data/Состояние РЭС 2.png" id="5_p41nv"] [ext_resource type="Texture2D" uid="uid://di30dfvbbdnms" path="res://data/Состояние РЭС 1.png" id="6_m57px"] [ext_resource type="Texture2D" uid="uid://kyrnn1mqpc08" path="res://data/РЛС1.png" id="6_y58bl"] [ext_resource type="Texture2D" uid="uid://cx0f3wcx76u1k" path="res://data/РЛС2.png" id="7_mxw8g"] [ext_resource type="Texture2D" uid="uid://duu8q7sv0jwfh" path="res://data/ННВС.png" id="8_q16jd"] [ext_resource type="Texture2D" uid="uid://c1nld5t17kws3" path="res://data/Состояние ЭМС слабый сигнал.png" id="9_5u4bk"] +[ext_resource type="Texture2D" uid="uid://docnrxrm2f022" path="res://data/Угловой квадрат3.png" id="13_5ifkb"] [ext_resource type="Texture2D" uid="uid://djv8fkddcjucs" path="res://data/Скруглённый квадрат белый.png" id="15_2spgl"] -[ext_resource type="Texture2D" uid="uid://hd76uw2shjtn" path="res://data/Угловой квадрат2.png" id="16_b5v2s"] [ext_resource type="Texture2D" uid="uid://d3qui21aom1ac" path="res://data/Квадрат марс 454.png" id="17_p41nv"] [ext_resource type="Texture2D" uid="uid://cxrggrvx6l22q" path="res://data/Квадрат марс ОР-63.png" id="18_5ifkb"] [ext_resource type="Texture2D" uid="uid://by6a12oahbg82" path="res://data/Квадрат марс РЛС1.png" id="19_vyjnq"] @@ -28,8 +28,8 @@ [ext_resource type="Texture2D" uid="uid://cyb60nh23ys6k" path="res://data/Квадрат салатный ГО.png" id="27_2ft3r"] [ext_resource type="Texture2D" uid="uid://cw8sd7v5f31ww" path="res://data/Квадрат салатный с трубкой.png" id="28_rra4y"] [ext_resource type="Texture2D" uid="uid://busl8rb38lis" path="res://data/Скруглённый прямоуг салатный.png" id="29_5u4bk"] -[ext_resource type="Texture2D" uid="uid://xux3mch12733" path="res://data/Приём.png" id="30_l3ueu"] -[ext_resource type="Texture2D" uid="uid://bw2sx5d0mcu53" path="res://data/Излучение.png" id="31_2spgl"] +[ext_resource type="Texture2D" uid="uid://c6etralq2tvxg" path="res://data/Приёмник.png" id="29_vyjnq"] +[ext_resource type="Texture2D" uid="uid://c73tjrn8gr00o" path="res://data/Передатчик.png" id="30_68srw"] [ext_resource type="Texture2D" uid="uid://7ody4v7qy36g" path="res://data/Скруглённый прямоугольник серый.png" id="31_b5v2s"] [ext_resource type="Texture2D" uid="uid://carr8bw5rwiwj" path="res://data/Кнопка подтверждения01.png" id="32_p41nv"] [ext_resource type="Texture2D" uid="uid://3siondd3feev" path="res://data/Скруглённый прямоугольник белый.png" id="33_5ifkb"] @@ -69,12 +69,12 @@ texture = ExtResource("3_8gk36") [node name="СостояниеРэс44" type="Sprite2D" parent="Op-63"] position = Vector2(277.772, 259.444) scale = Vector2(1.77945, 1.77945) -texture = ExtResource("4_b3mus") +texture = ExtResource("4_b5v2s") [node name="СостояниеРэс24" type="Sprite2D" parent="Op-63"] position = Vector2(277.772, 192.18) scale = Vector2(1.77945, 1.77945) -texture = ExtResource("5_yqn2y") +texture = ExtResource("5_p41nv") [node name="СостояниеРэс2" type="Sprite2D" parent="Op-63"] visible = false @@ -94,12 +94,12 @@ texture = ExtResource("4_nqi0i") [node name="СостояниеРэс45" type="Sprite2D" parent="454"] position = Vector2(277.956, 259.615) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("4_b3mus") +texture = ExtResource("4_b5v2s") [node name="СостояниеРэс25" type="Sprite2D" parent="454"] position = Vector2(277.956, 192.308) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("5_yqn2y") +texture = ExtResource("5_p41nv") [node name="СостояниеРэс3" type="Sprite2D" parent="454"] position = Vector2(275.641, 38.4615) @@ -127,12 +127,12 @@ texture = ExtResource("5_e7tlv") [node name="СостояниеРэс40" type="Sprite2D" parent="Го"] position = Vector2(278.045, 253.205) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("4_b3mus") +texture = ExtResource("4_b5v2s") [node name="СостояниеРэс20" type="Sprite2D" parent="Го"] position = Vector2(278.045, 185.897) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("5_yqn2y") +texture = ExtResource("5_p41nv") [node name="СостояниеЭмсСлабыйСигнал" type="Sprite2D" parent="Го"] position = Vector2(278.045, 118.59) @@ -151,12 +151,12 @@ texture = ExtResource("6_y58bl") [node name="СостояниеРэс41" type="Sprite2D" parent="Рлс1"] position = Vector2(278.045, 259.615) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("4_b3mus") +texture = ExtResource("4_b5v2s") [node name="СостояниеРэс21" type="Sprite2D" parent="Рлс1"] position = Vector2(278.045, 192.308) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("5_yqn2y") +texture = ExtResource("5_p41nv") [node name="СостояниеЭмсСлабыйСигнал2" type="Sprite2D" parent="Рлс1"] position = Vector2(278.045, 125) @@ -175,12 +175,12 @@ texture = ExtResource("7_mxw8g") [node name="СостояниеРэс42" type="Sprite2D" parent="Рлс2"] position = Vector2(278.045, 259.615) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("4_b3mus") +texture = ExtResource("4_b5v2s") [node name="СостояниеРэс22" type="Sprite2D" parent="Рлс2"] position = Vector2(278.045, 192.308) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("5_yqn2y") +texture = ExtResource("5_p41nv") [node name="СостояниеЭмсСлабыйСигнал3" type="Sprite2D" parent="Рлс2"] position = Vector2(278.045, 125) @@ -199,16 +199,16 @@ texture = ExtResource("8_q16jd") [node name="СостояниеРэс43" type="Sprite2D" parent="Ннвс"] position = Vector2(277.956, 253.205) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("4_b3mus") +texture = ExtResource("4_b5v2s") [node name="СостояниеРэс23" type="Sprite2D" parent="Ннвс"] position = Vector2(277.956, 185.897) scale = Vector2(1.78063, 1.78063) -texture = ExtResource("5_yqn2y") +texture = ExtResource("5_p41nv") [node name="УгловойКвадрат2" type="Sprite2D" parent="."] position = Vector2(1250, 824) -texture = ExtResource("16_b5v2s") +texture = ExtResource("13_5ifkb") [node name="КвадратМарс454" type="Sprite2D" parent="УгловойКвадрат2"] position = Vector2(0, 49) @@ -403,148 +403,171 @@ position = Vector2(196, 196) texture = ExtResource("26_2spgl") [node name="СкруглённыйПрямоугСалатный" type="Sprite2D" parent="."] -position = Vector2(84, 828) +position = Vector2(101, 828) +scale = Vector2(1.74359, 1.16667) +texture = ExtResource("29_5u4bk") + +[node name="СкруглённыйПрямоугСалатный12" type="Sprite2D" parent="."] +position = Vector2(220, 828) scale = Vector2(1.33333, 1.16667) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный4" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] -position = Vector2(660, 0) +[node name="СкруглённыйПрямоугСалатный4" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] +position = Vector2(582, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный5" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] -position = Vector2(774, 0) +[node name="СкруглённыйПрямоугСалатный5" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] +position = Vector2(696, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный6" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] -position = Vector2(546, 0) -texture = ExtResource("29_5u4bk") - -[node name="СкруглённыйПрямоугСалатный7" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] +[node name="СкруглённыйПрямоугСалатный6" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] position = Vector2(468, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный8" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] +[node name="СкруглённыйПрямоугСалатный7" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] position = Vector2(390, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный9" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] +[node name="СкруглённыйПрямоугСалатный8" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] position = Vector2(312, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный10" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] +[node name="СкруглённыйПрямоугСалатный9" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] position = Vector2(234, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный11" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] +[node name="СкруглённыйПрямоугСалатный10" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] position = Vector2(156, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="СкруглённыйПрямоугСалатный12" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] +[node name="СкруглённыйПрямоугСалатный11" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] position = Vector2(78, 0) +scale = Vector2(1, 1) texture = ExtResource("29_5u4bk") -[node name="Приём" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] -position = Vector2(717, 0) +[node name="Приём" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] +position = Vector2(639, 0) scale = Vector2(0.75, 1) -texture = ExtResource("30_l3ueu") +texture = ExtResource("29_vyjnq") -[node name="Излучение" type="Sprite2D" parent="СкруглённыйПрямоугСалатный"] -position = Vector2(603, 0) +[node name="Излучение" type="Sprite2D" parent="СкруглённыйПрямоугСалатный12"] +position = Vector2(525, 0) scale = Vector2(0.75, 1) -texture = ExtResource("31_2spgl") +texture = ExtResource("30_68srw") -[node name="Label2" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 48.75 +[node name="Label2" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = -29.25 offset_top = -10.2857 -offset_right = 108.75 -offset_bottom = 8.7143 +offset_right = 30.75 +offset_bottom = 8.71429 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "Изделие" +metadata/_edit_use_anchors_ = true -[node name="Label" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = -33.0 -offset_top = -17.1429 -offset_right = 35.0 -offset_bottom = 13.8571 -theme_override_colors/font_color = Color(0, 0, 0, 1) -theme_override_font_sizes/font_size = 12 -text = "Источник -информации" -horizontal_alignment = 1 -vertical_alignment = 3 - -[node name="Label3" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 133.0 +[node name="Label3" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 55.0 offset_top = -10.0 -offset_right = 180.0 +offset_right = 102.0 offset_bottom = 9.0 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "Режим" +metadata/_edit_use_anchors_ = true -[node name="Label4" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 209.25 +[node name="Label4" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 131.25 offset_top = -10.2857 -offset_right = 258.25 -offset_bottom = 8.7143 +offset_right = 180.25 +offset_bottom = 8.71429 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "Азимут" +metadata/_edit_use_anchors_ = true -[node name="Label5" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 627.0 -offset_top = -20.5713 -offset_right = 693.0 -offset_bottom = 20.4287 +[node name="Label5" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 549.0 +offset_top = -20.5714 +offset_right = 615.0 +offset_bottom = 20.4286 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "Запрет передачи" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label6" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 516.75 -offset_top = -18.8572 -offset_right = 574.75 -offset_bottom = 22.1428 +[node name="Label6" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 438.75 +offset_top = -19.7144 +offset_right = 496.75 +offset_bottom = 21.2856 theme_override_colors/font_color = Color(0, 0, 0, 1) -text = "Верхняя частота" +text = "Верхняя +частота" +horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label7" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 441.0 +[node name="Label7" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 363.0 offset_top = -19.7143 -offset_right = 495.0 +offset_right = 417.0 offset_bottom = 21.2857 theme_override_colors/font_color = Color(0, 0, 0, 1) -text = "Нижняя частота" +text = "Нижняя +частота" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label8" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 362.25 +[node name="Label8" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 284.25 offset_top = -10.2857 -offset_right = 418.25 -offset_bottom = 8.7143 +offset_right = 340.25 +offset_bottom = 8.71429 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "Кластер" +metadata/_edit_use_anchors_ = true -[node name="Label9" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 275.25 -offset_top = -10.2857 -offset_right = 349.25 -offset_bottom = 8.7143 +[node name="Label9" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 197.25 +offset_top = -20.5714 +offset_right = 271.25 +offset_bottom = 20.4286 theme_override_colors/font_color = Color(0, 0, 0, 1) -text = "Угол места" +text = "Угол +места" +horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label10" type="Label" parent="СкруглённыйПрямоугСалатный"] -offset_left = 747.0 -offset_top = -20.5713 -offset_right = 801.0 -offset_bottom = 20.4287 +[node name="Label" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = -133.5 +offset_top = -22.2857 +offset_right = -44.5001 +offset_bottom = 18.7143 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "Источник +информации" +horizontal_alignment = 1 +vertical_alignment = 3 +metadata/_edit_use_anchors_ = true + +[node name="Label10" type="Label" parent="СкруглённыйПрямоугСалатный12"] +offset_left = 669.0 +offset_top = -20.5714 +offset_right = 723.0 +offset_bottom = 20.4286 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "Запрет приёма" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true [node name="СкруглённыйПрямоугольникБелый" type="Sprite2D" parent="."] -position = Vector2(84, 871) -scale = Vector2(1.13043, 1) +position = Vector2(102, 871) +scale = Vector2(1.41304, 1) texture = ExtResource("31_b5v2s") [node name="СкруглённыйПрямоугольникБелый2" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] @@ -583,598 +606,704 @@ texture = ExtResource("31_b5v2s") position = Vector2(0, 261) texture = ExtResource("31_b5v2s") -[node name="КнопкаПодтверждения01" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.683, 0.25) -scale = Vector2(1.22077, 1.28261) +[node name="КнопкаПодтверждения01" type="Sprite2D" parent="."] +position = Vector2(996.247, 871.25) +scale = Vector2(1.37999, 1.28261) texture = ExtResource("32_p41nv") -[node name="Label3" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = -31.8462 -offset_top = -10.0 -offset_right = 36.1538 -offset_bottom = 9.0 +[node name="Label3" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -681.34 +offset_top = -10.3305 +offset_right = -613.34 +offset_bottom = 8.66949 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="СкруглённыйПрямоугольникБелый11" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 0) +[node name="СкруглённыйПрямоугольникБелый11" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, -0.194946) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый12" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 29) +[node name="СкруглённыйПрямоугольникБелый12" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый13" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 58) +[node name="СкруглённыйПрямоугольникБелый13" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый14" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 87) +[node name="СкруглённыйПрямоугольникБелый14" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый15" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 116) +[node name="СкруглённыйПрямоугольникБелый15" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый16" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 145) +[node name="СкруглённыйПрямоугольникБелый16" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый17" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 174) +[node name="СкруглённыйПрямоугольникБелый17" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый18" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 203) +[node name="СкруглённыйПрямоугольникБелый18" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый19" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 232) +[node name="СкруглённыйПрямоугольникБелый19" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый20" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(92, 261) +[node name="СкруглённыйПрямоугольникБелый20" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-562.5, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый21" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 0) +[node name="СкруглённыйПрямоугольникБелый21" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, -0.194946) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый22" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 29) +[node name="СкруглённыйПрямоугольникБелый22" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый23" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 58) +[node name="СкруглённыйПрямоугольникБелый23" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый24" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 87) +[node name="СкруглённыйПрямоугольникБелый24" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый25" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 116) +[node name="СкруглённыйПрямоугольникБелый25" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый26" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 145) +[node name="СкруглённыйПрямоугольникБелый26" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый27" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 174) +[node name="СкруглённыйПрямоугольникБелый27" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый28" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 203) +[node name="СкруглённыйПрямоугольникБелый28" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый29" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 232) +[node name="СкруглённыйПрямоугольникБелый29" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый30" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(184, 261) +[node name="СкруглённыйПрямоугольникБелый30" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-487.138, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый31" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 0) +[node name="СкруглённыйПрямоугольникБелый31" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, -0.194946) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый32" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 29) +[node name="СкруглённыйПрямоугольникБелый32" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый33" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 58) +[node name="СкруглённыйПрямоугольникБелый33" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый34" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 87) +[node name="СкруглённыйПрямоугольникБелый34" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый35" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 116) +[node name="СкруглённыйПрямоугольникБелый35" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый36" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 145) +[node name="СкруглённыйПрямоугольникБелый36" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый37" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 174) +[node name="СкруглённыйПрямоугольникБелый37" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый38" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 203) +[node name="СкруглённыйПрямоугольникБелый38" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый39" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 232) +[node name="СкруглённыйПрямоугольникБелый39" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый40" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(276, 261) +[node name="СкруглённыйПрямоугольникБелый40" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-411.775, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый41" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 0) +[node name="СкруглённыйПрямоугольникБелый41" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, -0.194946) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый42" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 29) +[node name="СкруглённыйПрямоугольникБелый42" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый43" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 58) +[node name="СкруглённыйПрямоугольникБелый43" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый44" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 87) +[node name="СкруглённыйПрямоугольникБелый44" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый45" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 116) +[node name="СкруглённыйПрямоугольникБелый45" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый46" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 145) +[node name="СкруглённыйПрямоугольникБелый46" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый47" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 174) +[node name="СкруглённыйПрямоугольникБелый47" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый48" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 203) +[node name="СкруглённыйПрямоугольникБелый48" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый49" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 232) +[node name="СкруглённыйПрямоугольникБелый49" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый50" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(368, 261) +[node name="СкруглённыйПрямоугольникБелый50" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-336.413, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый51" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 0) +[node name="СкруглённыйПрямоугольникБелый51" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, -0.194946) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый52" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 29) +[node name="СкруглённыйПрямоугольникБелый52" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый53" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 58) +[node name="СкруглённыйПрямоугольникБелый53" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый54" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 87) +[node name="СкруглённыйПрямоугольникБелый54" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый55" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 116) +[node name="СкруглённыйПрямоугольникБелый55" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый56" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 145) +[node name="СкруглённыйПрямоугольникБелый56" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый57" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 174) +[node name="СкруглённыйПрямоугольникБелый57" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый58" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 203) +[node name="СкруглённыйПрямоугольникБелый58" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый59" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 232) +[node name="СкруглённыйПрямоугольникБелый59" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый60" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(460, 261) +[node name="СкруглённыйПрямоугольникБелый60" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-261.051, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый61" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 0) +[node name="СкруглённыйПрямоугольникБелый61" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, -0.194946) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый62" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 29) +[node name="СкруглённыйПрямоугольникБелый62" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый63" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 58) +[node name="СкруглённыйПрямоугольникБелый63" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый64" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 87) +[node name="СкруглённыйПрямоугольникБелый64" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый65" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 116) +[node name="СкруглённыйПрямоугольникБелый65" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый66" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 145) +[node name="СкруглённыйПрямоугольникБелый66" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый67" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 174) +[node name="СкруглённыйПрямоугольникБелый67" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый68" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 203) +[node name="СкруглённыйПрямоугольникБелый68" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый69" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 232) +[node name="СкруглённыйПрямоугольникБелый69" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый70" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(552, 261) +[node name="СкруглённыйПрямоугольникБелый70" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-185.689, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый71" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 0) +[node name="СкруглённыйПрямоугольникБелый71" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, -0.194946) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый72" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 29) +[node name="СкруглённыйПрямоугольникБелый72" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый73" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 58) +[node name="СкруглённыйПрямоугольникБелый73" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый74" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 87) +[node name="СкруглённыйПрямоугольникБелый74" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый75" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 116) +[node name="СкруглённыйПрямоугольникБелый75" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый76" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 145) +[node name="СкруглённыйПрямоугольникБелый76" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый77" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 174) +[node name="СкруглённыйПрямоугольникБелый77" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый78" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 203) +[node name="СкруглённыйПрямоугольникБелый78" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый79" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 232) +[node name="СкруглённыйПрямоугольникБелый79" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый80" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(644, 261) +[node name="СкруглённыйПрямоугольникБелый80" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-110.326, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый81" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 29) +[node name="СкруглённыйПрямоугольникБелый81" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый82" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 58) +[node name="СкруглённыйПрямоугольникБелый82" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый83" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 87) +[node name="СкруглённыйПрямоугольникБелый83" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый84" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 116) +[node name="СкруглённыйПрямоугольникБелый84" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый85" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 145) +[node name="СкруглённыйПрямоугольникБелый85" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый86" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 174) +[node name="СкруглённыйПрямоугольникБелый86" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый87" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 203) +[node name="СкруглённыйПрямоугольникБелый87" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый88" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 232) +[node name="СкруглённыйПрямоугольникБелый88" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый89" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 261) +[node name="СкруглённыйПрямоугольникБелый89" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="КнопкаПодтверждения02" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.683, 0.25) -scale = Vector2(1.22077, 1.28261) +[node name="КнопкаПодтверждения02" type="Sprite2D" parent="КнопкаПодтверждения01"] +scale = Vector2(1, 1) texture = ExtResource("32_p41nv") -[node name="СкруглённыйПрямоугольникБелый90" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 29) +[node name="СкруглённыйПрямоугольникБелый90" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый91" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 58) +[node name="СкруглённыйПрямоугольникБелый91" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый92" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 87) +[node name="СкруглённыйПрямоугольникБелый92" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый93" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 116) +[node name="СкруглённыйПрямоугольникБелый93" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый94" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 145) +[node name="СкруглённыйПрямоугольникБелый94" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый95" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 174) +[node name="СкруглённыйПрямоугольникБелый95" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый96" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 203) +[node name="СкруглённыйПрямоугольникБелый96" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый97" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 232) +[node name="СкруглённыйПрямоугольникБелый97" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый98" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(778.461, 261) +[node name="СкруглённыйПрямоугольникБелый98" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-0.181946, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="КнопкаПодтверждения03" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(913.144, 0.25) -scale = Vector2(1.22077, 1.28261) +[node name="КнопкаПодтверждения03" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(110.144, 0) +scale = Vector2(1, 1) texture = ExtResource("32_p41nv") -[node name="СкруглённыйПрямоугольникБелый99" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 29) +[node name="СкруглённыйПрямоугольникБелый99" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 22.4152) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый100" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 58) +[node name="СкруглённыйПрямоугольникБелый100" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 45.0254) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый101" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 87) +[node name="СкруглённыйПрямоугольникБелый101" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 67.6355) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый102" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 116) +[node name="СкруглённыйПрямоугольникБелый102" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 90.2457) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый103" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 145) +[node name="СкруглённыйПрямоугольникБелый103" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 112.856) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый104" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 174) +[node name="СкруглённыйПрямоугольникБелый104" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 135.466) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый105" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 203) +[node name="СкруглённыйПрямоугольникБелый105" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 158.076) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый106" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 232) +[node name="СкруглённыйПрямоугольникБелый106" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 180.686) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый107" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(912.923, 261) +[node name="СкруглённыйПрямоугольникБелый107" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(109.963, 203.296) +scale = Vector2(0.819155, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый108" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 0) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый108" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, -0.194946) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый109" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 29) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый109" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 22.4152) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый110" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 58) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый110" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 45.0254) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый111" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 87) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый111" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 67.6355) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый112" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 116) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый112" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 90.2457) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый113" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 145) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый113" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 112.856) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый114" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 174) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый114" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 135.466) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый115" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 203) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый115" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 158.076) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый116" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 232) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый116" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 180.686) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый117" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(711.231, 261) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый117" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(-55.2537, 203.296) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый118" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 0) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый118" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, -0.194946) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый119" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 29) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый119" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 22.4152) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый120" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 58) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый120" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 45.0254) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый121" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 87) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый121" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 67.6355) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый122" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 116) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый122" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 90.2457) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый123" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 145) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый123" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 112.856) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый124" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 174) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый124" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 135.466) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый125" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 203) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый125" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 158.076) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="СкруглённыйПрямоугольникБелый126" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 232) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый126" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 180.686) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("33_5ifkb") -[node name="СкруглённыйПрямоугольникБелый127" type="Sprite2D" parent="СкруглённыйПрямоугольникБелый"] -position = Vector2(845.692, 261) -scale = Vector2(0.461539, 1) +[node name="СкруглённыйПрямоугольникБелый127" type="Sprite2D" parent="КнопкаПодтверждения01"] +position = Vector2(54.8907, 203.296) +scale = Vector2(0.378072, 0.77966) texture = ExtResource("31_b5v2s") -[node name="Label4" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 61.9231 -offset_top = -10.0 -offset_right = 129.923 -offset_bottom = 9.0 +[node name="Label4" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -596.558 +offset_top = -9.55084 +offset_right = -528.558 +offset_bottom = 9.44916 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label5" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 154.808 -offset_top = -10.0 -offset_right = 222.808 -offset_bottom = 9.0 +[node name="Label5" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -521.195 +offset_top = -10.3305 +offset_right = -453.195 +offset_bottom = 8.66949 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label6" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 245.923 -offset_top = -10.0 -offset_right = 313.923 -offset_bottom = 9.0 +[node name="Label6" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -445.834 +offset_top = -9.55084 +offset_right = -377.834 +offset_bottom = 9.44916 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label7" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 337.923 -offset_top = -10.0 -offset_right = 405.923 -offset_bottom = 9.0 +[node name="Label7" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -370.471 +offset_top = -9.55084 +offset_right = -302.471 +offset_bottom = 9.44916 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label8" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 429.923 -offset_top = -10.0 -offset_right = 497.923 -offset_bottom = 9.0 +[node name="Label8" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -295.109 +offset_top = -9.55084 +offset_right = -227.109 +offset_bottom = 9.44916 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label9" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 522.808 -offset_top = -10.0 -offset_right = 590.808 -offset_bottom = 9.0 +[node name="Label9" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -219.746 +offset_top = -9.55084 +offset_right = -151.746 +offset_bottom = 9.44916 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label10" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 614.808 -offset_top = -10.0 -offset_right = 682.808 -offset_bottom = 9.0 +[node name="Label10" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -144.384 +offset_top = -9.55084 +offset_right = -76.384 +offset_bottom = 9.44916 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label11" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 706.808 -offset_top = -10.0 -offset_right = 718.808 -offset_bottom = 9.0 +[node name="Label11" type="Label" parent="КнопкаПодтверждения01"] +offset_left = -61.0507 +offset_top = -10.3305 +offset_right = -49.0507 +offset_bottom = 8.66949 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true -[node name="Label12" type="Label" parent="СкруглённыйПрямоугольникБелый"] -offset_left = 841.269 -offset_top = -10.0 -offset_right = 853.269 -offset_bottom = 9.0 +[node name="Label12" type="Label" parent="КнопкаПодтверждения01"] +offset_left = 49.0936 +offset_top = -10.3305 +offset_right = 61.0936 +offset_bottom = 8.66949 theme_override_colors/font_color = Color(0, 0, 0, 1) text = "--" horizontal_alignment = 1 +metadata/_edit_use_anchors_ = true [node name="ТаблицаЧастот" type="Sprite2D" parent="."] position = Vector2(800, 502.25) From cd39124daa50603fcbf51a19b49b0eb785dd16df Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 11:47:49 +0300 Subject: [PATCH 16/21] =?UTF-8?q?=D0=A0=D0=B5=D0=B3=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D1=8F.=20=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=80=20=D0=B4?= =?UTF-8?q?=D0=B8=D0=B0=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B=20=D0=B2=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=BE=D1=82=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=A0=D0=A2=D0=9E/=D0=BE=D0=B1=D0=B7=D0=BE=D1=80?= =?UTF-8?q?=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.gd | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index 778b62d2..850977de 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -10,6 +10,8 @@ var color1: Color = color1_default var fs_default_colors: PackedColorArray ## Цвета по умолчанию для блоков ФС. @export var SecZap: PackedScene +@export var inner_radius_0: = 0.36 ## Внутренний радиус диаграммы в режиме РТО +@export var inner_radius_1: = 0.855 ## Внутренний радиус диаграммы в обзора func _ready() -> void: @@ -24,6 +26,7 @@ func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125 func set_band_colors(val: PackedColorArray): material.set('shader_parameter/ant_band_c', val) func set_band_failures(val: PackedInt32Array): material.set('shader_parameter/ant_band_m', val) func set_canvas_rotation(val: float): material.set('shader_parameter/rotation', val) +func set_radius_inner_frac(val: float): material.set('shader_parameter/inner_radius', val) func set_strob_band(val: float): $строб.set_instance_shader_parameter('band', val / 125.0) func set_strob_center(val: Vector2): $строб.position = val func set_strob_color(val: Color): $строб.set_instance_shader_parameter('color', val) @@ -32,17 +35,18 @@ func set_strob_radius(val: float): $строб.set_instance_shader_p func set_strob_visible(val: bool): $строб.visible = val func set_strob_width(val: float): $строб.set_instance_shader_parameter('width', val) -func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c') -func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m') -func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation') -func get_radius_outter() -> float: return size.x / scale.x -func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0 -func get_strob_center() -> Vector2: return $строб.position -func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') -func get_strob_dir() -> float: return $строб.get_instance_shader_parameter('dir') -func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0 -func get_strob_visible() -> bool: return $строб.visible -func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width') +func get_band_colors(_val: Array): return material.get('shader_parameter/ant_band_c') +func get_band_failures(_val: Array): return material.get('shader_parameter/ant_band_m') +func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation') +func get_radius_outter() -> float: return size.x / scale.x +func get_radius_inner_frac() -> float: return material.get('shader_parameter/inner_radius') +func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0 +func get_strob_center() -> Vector2: return $строб.position +func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') +func get_strob_dir() -> float: return $строб.get_instance_shader_parameter('dir') +func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0 +func get_strob_visible() -> bool: return $строб.visible +func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width') ## Добавляет сектор запрета[br] @@ -99,10 +103,11 @@ func set_seczap_color(id: int, c: Color): func set_view_mode(val: int): if val == 1: + material.set('shader_parameter/inner_radius', inner_radius_1) $строб.hide() else: + material.set('shader_parameter/inner_radius', inner_radius_0) $строб.show() - material.set('shader_parameter/mode', val) func _on_settings_changed(): From 63d6643475d2248685b5be28c0ba257db06079f2 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 11:49:59 +0300 Subject: [PATCH 17/21] =?UTF-8?q?=D0=A0=D0=B5=D0=B3=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D1=8F.=20=D0=92=D0=B8=D0=B4=20=D0=B4=D0=B8=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D0=B0=D0=BC=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/diagram/diagram.tscn | 4 ++-- shaders/antenas.gdshader | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scenes/diagram/diagram.tscn b/scenes/diagram/diagram.tscn index 4e802783..b31c4d1e 100644 --- a/scenes/diagram/diagram.tscn +++ b/scenes/diagram/diagram.tscn @@ -14,9 +14,9 @@ shader_parameter/inner_radius = 0.36 shader_parameter/outer_radius = 1.0 shader_parameter/grid_line_width = 0.0025 shader_parameter/rotation = 0.0 -shader_parameter/ffr = 0.2 +shader_parameter/ffr = 0.15 shader_parameter/sfr = 0.0 -shader_parameter/pfr = 0.05 +shader_parameter/pfr = 0.025 shader_parameter/ant_band_c = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) shader_parameter/ant_band_m = PackedInt32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) diff --git a/shaders/antenas.gdshader b/shaders/antenas.gdshader index ede8b7b3..06c5826d 100644 --- a/shaders/antenas.gdshader +++ b/shaders/antenas.gdshader @@ -13,7 +13,7 @@ uniform float inner_radius = 0.36; /* Внутренняя незакраше uniform float outer_radius = 1.0; /* Внешний радиус. Относительное значение */ uniform float grid_line_width = 0.0025; /* Сетка, ширина линий. Относительное значение */ uniform float rotation: hint_range(0, 360) = 0.0; -uniform float ffr: hint_range(0.0, 1.0) = 0.2; /* Индикация неисправности модулей ФС. Заметность штриховки. Индикация неисправности модулей ФС */ +uniform float ffr: hint_range(0.0, 1.0) = 0.15; /* Индикация неисправности модулей ФС. Заметность штриховки. Индикация неисправности модулей ФС */ uniform float sfr: hint_range(0.0, 10.0) = 0.0; /* Индикация неисправности модулей ФС. Скорость движения штрховки */ uniform float pfr: hint_range(0.01, 1.0) = 0.025; /* Индикация неисправности модулей ФС. Частота штриховки */ From ff85c6f80a369624d144568923ed6d7c44377f2f Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 12:59:10 +0300 Subject: [PATCH 18/21] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20E=200:00:02:004=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8.gd:260=20@=20b?= =?UTF-8?q?utton=5Fsettings():=20In=20Object=20of=20type=20'LineEdit':=20A?= =?UTF-8?q?ttempt=20to=20connect=20nonexistent=20signal=20'popup=5Fclosed'?= =?UTF-8?q?=20to=20callable=20'Panel(configure)::on=5Fcolor=5Fclosed=5Fw'.?= =?UTF-8?q?=20=20=20<=D0=9E=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20C++>=20=20Cond?= =?UTF-8?q?ition=20"!signal=5Fis=5Fvalid"=20is=20true.=20Returning:=20ERR?= =?UTF-8?q?=5FINVALID=5FPARAMETER=20=20=20<=D0=98=D1=81=D1=85=D0=BE=D0=B4?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4=20C++>core/object/objec?= =?UTF-8?q?t.cpp:1439=20@=20connect()=20=20=20<=D0=A2=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D0=B0>=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA?= =?UTF-8?q?=D0=B8.gd:260=20@=20button=5Fsettings()=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B8.gd:231=20@=20setting=5Ftab()=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=D0=BD=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B9=D0=BA=D0=B8.gd:96=20@=20=5Fready()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/настройки/настройки.gd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index 4e029aa5..bfe61a0d 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -64,10 +64,10 @@ const SETTING_TABLE = [ ['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'], ['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ], - ['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'], ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ], ['Цвет фона схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет фона'], - ['Цвет схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет схемы '] ] + ['Цвет схемы', TableEdit, TableColorPick, 'Схема прибора Э2. Изменение цвет схемы '], + ['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'] ] ## TODO: Придумать как избавиться от индексов From fa84118149c0d7da9273b85959be208fca29b84a Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 13:40:18 +0300 Subject: [PATCH 19/21] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20E=200:00:03:969=20=20=20?= =?UTF-8?q?=D1=8D=D0=BC=D1=81-=D1=82=D0=B3.gd:13=20@=20on=5Ftrassa=5Fline?= =?UTF-8?q?=5Fchanged():=20Node=20not=20found:=20"=D0=A1=D0=BA=D1=80=D1=83?= =?UTF-8?q?=D0=B3=D0=BB=D1=91=D0=BD=D0=BD=D1=8B=D0=B9=D0=9F=D1=80=D1=8F?= =?UTF-8?q?=D0=BC=D0=BE=D1=83=D0=B3=D0=BE=D0=BB=D1=8C=D0=BD=D0=B8=D0=BA?= =?UTF-8?q?=D0=91=D0=B5=D0=BB=D1=8B=D0=B9/Label3"=20(relative=20to=20"/roo?= =?UTF-8?q?t/panel/tab=5Fswitch/=D0=AD=D0=9C=D0=A1=20=D0=A2=D0=93").=20=20?= =?UTF-8?q?=20<=D0=9E=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20C++>=20=20Method/fun?= =?UTF-8?q?ction=20failed.=20Returning:=20nullptr=20=20=20<=D0=98=D1=81?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4=20C++?= =?UTF-8?q?>scene/main/node.cpp:1877=20@=20get=5Fnode()=20=20=20<=D0=A2?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D0=BA=D0=B0>=D1=8D=D0=BC=D1=81-=D1=82=D0=B3.?= =?UTF-8?q?gd:13=20@=20on=5Ftrassa=5Fline=5Fchanged()=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20trassa.gd:57=20@=20parse()=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20network.gd:338=20@?= =?UTF-8?q?=20poll=5Freceive=5Fudp()=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20network.gd:429=20@=20=5Fprocess()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/эмс2/эмс-тг.gd | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/scenes/эмс2/эмс-тг.gd b/scenes/эмс2/эмс-тг.gd index 88c93a61..1bb69d43 100644 --- a/scenes/эмс2/эмс-тг.gd +++ b/scenes/эмс2/эмс-тг.gd @@ -8,31 +8,8 @@ func _ready() -> void: func on_trassa_line_changed(unit_trassa): - if unit_trassa.online: - $'454/СостояниеРэс3'.self_modulate = Color.WEB_GREEN - $'СкруглённыйПрямоугольникБелый/Label3'.text = 'Трасса' - $'СкруглённыйПрямоугольникБелый/Label4'.text = 'Трасса' - $'СкруглённыйПрямоугольникБелый/Label5'.text = 'Активный' - $'СкруглённыйПрямоугольникБелый/Label6'.text = str(unit_trassa.daa) - $'СкруглённыйПрямоугольникБелый/Label7'.text = str(unit_trassa.dap) - $'СкруглённыйПрямоугольникБелый/Label8'.text = '1' - $'СкруглённыйПрямоугольникБелый/Label9'.text = str(unit_trassa.lfb) - $'СкруглённыйПрямоугольникБелый/Label10'.text = str(unit_trassa.lfb) - else: - $'454/СостояниеРэс3'.self_modulate = Color.WHITE - $'СкруглённыйПрямоугольникБелый/Label3'.text = '-' - $'СкруглённыйПрямоугольникБелый/Label4'.text = '-' - $'СкруглённыйПрямоугольникБелый/Label5'.text = '-' - $'СкруглённыйПрямоугольникБелый/Label6'.text = '-' - $'СкруглённыйПрямоугольникБелый/Label7'.text = '-' - $'СкруглённыйПрямоугольникБелый/Label8'.text = '-' - $'СкруглённыйПрямоугольникБелый/Label9'.text = '-' - $'СкруглённыйПрямоугольникБелый/Label10'.text = '-' + pass func on_sector_klaster(_data, unit_trassa): - $'СкруглённыйПрямоугольникБелый/Label6'.text = str(unit_trassa.dap) - $'СкруглённыйПрямоугольникБелый/Label7'.text = str(unit_trassa.daa) - $'СкруглённыйПрямоугольникБелый/Label8'.text = '1' - $'СкруглённыйПрямоугольникБелый/Label9'.text = str(unit_trassa.lfb) - $'СкруглённыйПрямоугольникБелый/Label10'.text = str(unit_trassa.hfb) + pass From 76a079dd2339e8bac530eb18a2bb8929951cd109 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 13:41:27 +0300 Subject: [PATCH 20/21] =?UTF-8?q?=D0=A0=D0=B5=D0=B3=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D1=8F.=20=D0=A6=D0=B5=D0=BB=D0=B8=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BD=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D0=BE=D0=B9=20=D1=87=D0=B0=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 371e6938..8d9c5f26 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -65,7 +65,7 @@ drag_scale_band = 0.05 drag_scale_width = 0.5 freq_high = 6000.0 freq_low = 370.0 -radius_center = Vector2(280, 280) +radius_center = Vector2(560, 560) radius_internal = 200.0 radius_outter = 200.0 strob_max_band = 15.538 From 57e7e0cc0b22ef56a30cddac7262f7c521719fab Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 24 Dec 2025 13:41:47 +0300 Subject: [PATCH 21/21] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/signaller.gd | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index 9c58dcd5..6491caed 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -30,12 +30,15 @@ signal режим_журнал() ## Вызывается при переходе в режим [b]ЭМС[/b]. signal режим_эмс() + ## Вызывается при переходе в режим [b]ЭМС ТГ[/b]. signal режим_эмс2() + ## Вызывается при переходе в режим [b]Настройка[/b]. signal режим_настройки() + ## Вызывается при включении/отключении режима [b]Тренаж[/b].[br] ## [param val] - [b]true[/b] тренаж включён. signal режим_тренаж(val: bool) @@ -215,10 +218,10 @@ signal tool_tip(new_ctrl_pos) signal update_fs_closed(fs_closed: Dictionary) -signal sector_klaster (new_sector_data) +signal sector_klaster(new_sector_data) -signal clear_klaster () +signal clear_klaster() ## Вызывается при нажатии на кнопку "Запуск контроля".[br]