diff --git a/scenes/bip.gd b/scenes/bip.gd index 94badd26..1f5b5a3c 100644 --- a/scenes/bip.gd +++ b/scenes/bip.gd @@ -6,10 +6,10 @@ func _ready(): pass # Replace with function body. -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta): - pass +# Функция делает присваивает заданое значение видимости селектору +func set_sel_visible(value: bool): + $selector.visible = value -func _on_pressed(): - print_debug('Click') +func _on_bip_pressed(): + signaller.emit_signal('rto_threat_sel', self) diff --git a/scenes/bip.tscn b/scenes/bip.tscn index 9980797f..68b9d0fb 100644 --- a/scenes/bip.tscn +++ b/scenes/bip.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=12 format=3 uid="uid://nl1vklubr5kr"] -[ext_resource type="Script" path="res://scenes/bip.gd" id="1_23kyy"] -[ext_resource type="Shader" path="res://shaders/bip.gdshader" id="2_w4jcf"] -[ext_resource type="Shader" path="res://shaders/tracked.gdshader" id="3_d16rn"] +[ext_resource type="Script" path="res://scenes/bip.gd" id="1_4t8mr"] +[ext_resource type="Shader" path="res://shaders/bip.gdshader" id="2_17aco"] +[ext_resource type="Shader" path="res://shaders/tracked.gdshader" id="3_fiufo"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_2dulj"] -shader = ExtResource("2_w4jcf") +shader = ExtResource("2_17aco") shader_parameter/color = Color(0.972549, 0.12549, 0.411765, 1) shader_parameter/color_up = Color(1, 1, 1, 1) shader_parameter/tick_update = 0 @@ -112,7 +112,7 @@ shader_parameter/speed = -73.0 shader_parameter/ant_band_count_0 = 9 [sub_resource type="ShaderMaterial" id="ShaderMaterial_lkrha"] -shader = ExtResource("3_d16rn") +shader = ExtResource("3_fiufo") shader_parameter/ColorFig = Color(0, 0.862745, 0, 1) shader_parameter/point_1 = Vector2(0.125, 0) shader_parameter/point_2 = Vector2(0.125, 0.036) @@ -127,43 +127,42 @@ shader_parameter/speed = 71.0 [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_svd33"] -[node name="Control" type="Control"] +[node name="threat" type="Control"] layout_mode = 3 anchors_preset = 0 -offset_right = 31.0 -offset_bottom = 30.0 -script = ExtResource("1_23kyy") +offset_right = 20.0 +offset_bottom = 20.0 +script = ExtResource("1_4t8mr") [node name="bip" type="TextureButton" parent="."] material = SubResource("ShaderMaterial_2dulj") layout_direction = 1 layout_mode = 0 -offset_right = 3.0 -offset_bottom = 3.0 -scale = Vector2(10, 10) +offset_right = 1.0 +offset_bottom = 1.0 +scale = Vector2(20, 20) texture_normal = SubResource("PlaceholderTexture2D_w5pye") stretch_mode = 3 -script = ExtResource("1_23kyy") [node name="selector" type="Sprite2D" parent="."] visible = false material = SubResource("ShaderMaterial_fkqwb") -position = Vector2(10, 10) -scale = Vector2(10, 10) +scale = Vector2(20, 20) texture = SubResource("PlaceholderTexture2D_hqs6j") centered = false [node name="recomendation" type="Sprite2D" parent="."] +visible = false material = SubResource("ShaderMaterial_lpmq6") -position = Vector2(10, 10) -scale = Vector2(10, 10) +scale = Vector2(20, 20) texture = SubResource("PlaceholderTexture2D_hqs6j") centered = false [node name="track" type="Sprite2D" parent="."] +visible = false material = SubResource("ShaderMaterial_lkrha") -position = Vector2(15, 15) -scale = Vector2(13, 13) +position = Vector2(10, 10) +scale = Vector2(26, 26) texture = SubResource("PlaceholderTexture2D_svd33") -[connection signal="pressed" from="bip" to="bip" method="_on_pressed"] +[connection signal="pressed" from="bip" to="." method="_on_bip_pressed"] diff --git a/scenes/button-flat.tscn b/scenes/button-flat.tscn index 52de7142..f6d0c62d 100644 --- a/scenes/button-flat.tscn +++ b/scenes/button-flat.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=9 format=3 uid="uid://da7w3vkhadfwe"] -[ext_resource type="Script" path="res://scenes/nine-patch-button.gd" id="1_uqldr"] -[ext_resource type="Texture2D" uid="uid://ct0ajcwno03h7" path="res://data/кнопка-квадрат-0.png" id="2_ak74m"] +[ext_resource type="Script" path="res://scenes/nine-patch-button.gd" id="1_mm6jw"] +[ext_resource type="Texture2D" uid="uid://ct0ajcwno03h7" path="res://data/кнопка-квадрат-0.png" id="2_yle0i"] [sub_resource type="StyleBoxEmpty" id="1"] @@ -19,7 +19,7 @@ offset_right = 30.0 offset_bottom = 30.0 theme_override_styles/panel = SubResource("1") -script = ExtResource("1_uqldr") +script = ExtResource("1_mm6jw") toggle_mode = true [node name="button" type="Button" parent="."] @@ -35,7 +35,7 @@ clip_text = true [node name="state" type="NinePatchRect" parent="."] show_behind_parent = true layout_mode = 2 -texture = ExtResource("2_ak74m") +texture = ExtResource("2_yle0i") patch_margin_left = 10 patch_margin_top = 10 patch_margin_right = 10 diff --git a/scenes/canvas.tscn b/scenes/canvas.tscn index 1302ada9..641236f4 100644 --- a/scenes/canvas.tscn +++ b/scenes/canvas.tscn @@ -1,16 +1,16 @@ [gd_scene load_steps=7 format=3 uid="uid://b5kjdyxuwsot5"] -[ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://shaders/shader_edu.tres" id="1_27ax3"] -[ext_resource type="Script" path="res://scenes/canvas.gd" id="2_5wost"] -[ext_resource type="PackedScene" uid="uid://c73ahpv8uiuc7" path="res://scenes/sector.tscn" id="3_rminv"] -[ext_resource type="Shader" path="res://shaders/sector.gdshader" id="4_nkch3"] +[ext_resource type="Material" uid="uid://s6xe8igevnv2" path="res://shaders/shader_edu.tres" id="1_itkeo"] +[ext_resource type="Script" path="res://scenes/canvas.gd" id="2_clpjo"] +[ext_resource type="PackedScene" uid="uid://c73ahpv8uiuc7" path="res://scenes/sector.tscn" id="3_kddns"] +[ext_resource type="Shader" path="res://shaders/sector.gdshader" id="4_q0nxn"] [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"] size = Vector2(1600, 1200) -[sub_resource type="ShaderMaterial" id="ShaderMaterial_vipcu"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ys1x2"] resource_local_to_scene = true -shader = ExtResource("4_nkch3") +shader = ExtResource("4_q0nxn") shader_parameter/color = Color(1, 1, 1, 0.168627) shader_parameter/clip_color = Color(1, 0.5, 0.5, 1) shader_parameter/width = 45.0 @@ -20,12 +20,12 @@ shader_parameter/dir = 0.0 shader_parameter/inner_clip = 0.045 [node name="canvas" type="Sprite2D"] -material = ExtResource("1_27ax3") +material = ExtResource("1_itkeo") texture = SubResource("PlaceholderTexture2D_2bft1") centered = false -script = ExtResource("2_5wost") +script = ExtResource("2_clpjo") -[node name="строб" parent="." instance=ExtResource("3_rminv")] -material = SubResource("ShaderMaterial_vipcu") +[node name="строб" parent="." instance=ExtResource("3_kddns")] +material = SubResource("ShaderMaterial_ys1x2") position = Vector2(560, 560) scale = Vector2(1100, 1100) diff --git a/scenes/frm_ecm_list.tscn b/scenes/frm_ecm_list.tscn index 83312ce7..e19e309f 100644 --- a/scenes/frm_ecm_list.tscn +++ b/scenes/frm_ecm_list.tscn @@ -1,15 +1,16 @@ -[gd_scene load_steps=4 format=3 uid="uid://7rvw671tlx2i"] +[gd_scene load_steps=5 format=3 uid="uid://7rvw671tlx2i"] -[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_rrqe5"] -[ext_resource type="Script" path="res://table/table.gd" id="2_jufhc"] -[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="3_o3p72"] +[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_6swor"] +[ext_resource type="Script" path="res://scenes/scroll-ecm-list.gd" id="2_3x81o"] +[ext_resource type="Script" path="res://table/table.gd" id="3_4hydx"] +[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="4_7ys3c"] [node name="frm_ecm_list" type="NinePatchRect"] offset_right = 480.0 offset_bottom = 288.0 size_flags_horizontal = 3 size_flags_vertical = 3 -texture = ExtResource("1_rrqe5") +texture = ExtResource("1_6swor") patch_margin_left = 15 patch_margin_top = 30 patch_margin_right = 15 @@ -33,10 +34,11 @@ offset_left = 8.0 offset_top = 57.0 offset_right = 472.0 offset_bottom = 237.0 +script = ExtResource("2_3x81o") [node name="table" type="GridContainer" parent="scroll"] layout_mode = 2 -script = ExtResource("2_jufhc") +script = ExtResource("3_4hydx") [node name="grd_forced" type="GridContainer" parent="."] layout_mode = 0 @@ -46,7 +48,7 @@ offset_right = 472.0 offset_bottom = 281.0 columns = 4 -[node name="btn_srn" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("3_o3p72")] +[node name="btn_srn" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -54,7 +56,7 @@ tooltip_text = "Включает принудительную помеху" text = "СРН" metadata/rfi_name = "ozp1" -[node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("3_o3p72")] +[node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] editor_description = "Кнопка для принудительного включения группы секторов в режим JTIDS" layout_mode = 2 size_flags_horizontal = 3 @@ -62,7 +64,7 @@ size_flags_vertical = 3 text = "JTIDS" metadata/rfi_name = "ozp1" -[node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("3_o3p72")] +[node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -70,7 +72,7 @@ tooltip_text = "Кнопка для принудительного включе text = "КУПД" metadata/rfi_name = "ozp1" -[node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("3_o3p72")] +[node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("4_7ys3c")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 diff --git a/scenes/frm_ecm_params.tscn b/scenes/frm_ecm_params.tscn index fc15b42e..2e904e7a 100644 --- a/scenes/frm_ecm_params.tscn +++ b/scenes/frm_ecm_params.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=3 format=3 uid="uid://b1o10yvgjpb0j"] -[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_wpofl"] -[ext_resource type="Script" path="res://table/table.gd" id="2_0mbgy"] +[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_q1ow7"] +[ext_resource type="Script" path="res://table/table.gd" id="2_82yax"] [node name="frm_ecm_params" type="NinePatchRect"] size_flags_horizontal = 3 size_flags_vertical = 3 -texture = ExtResource("1_wpofl") +texture = ExtResource("1_q1ow7") patch_margin_left = 15 patch_margin_top = 30 patch_margin_right = 15 @@ -33,4 +33,4 @@ offset_bottom = 282.0 [node name="table" type="GridContainer" parent="scroll"] layout_mode = 2 -script = ExtResource("2_0mbgy") +script = ExtResource("2_82yax") diff --git a/scenes/frm_params.tscn b/scenes/frm_params.tscn index 8860ac58..f7e60736 100644 --- a/scenes/frm_params.tscn +++ b/scenes/frm_params.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=4 format=3 uid="uid://t54wukutvmjq"] -[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_3vj3c"] -[ext_resource type="Script" path="res://scenes/scroll-params.gd" id="2_go6hj"] -[ext_resource type="Script" path="res://table/table.gd" id="3_07em2"] +[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_65sy4"] +[ext_resource type="Script" path="res://scenes/scroll-params.gd" id="2_f8bq4"] +[ext_resource type="Script" path="res://table/table.gd" id="3_y0507"] [node name="frm_params" type="NinePatchRect"] size_flags_horizontal = 3 size_flags_vertical = 3 -texture = ExtResource("1_3vj3c") +texture = ExtResource("1_65sy4") patch_margin_left = 15 patch_margin_top = 30 patch_margin_right = 15 @@ -31,8 +31,8 @@ offset_left = 4.0 offset_top = 27.0 offset_right = 476.0 offset_bottom = 282.0 -script = ExtResource("2_go6hj") +script = ExtResource("2_f8bq4") [node name="table" type="GridContainer" parent="scroll"] layout_mode = 2 -script = ExtResource("3_07em2") +script = ExtResource("3_y0507") diff --git a/scenes/frm_threats.tscn b/scenes/frm_threats.tscn index f167f324..bb8543bf 100644 --- a/scenes/frm_threats.tscn +++ b/scenes/frm_threats.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=4 format=3 uid="uid://bsd67ktk8xp5a"] -[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_sbj4k"] -[ext_resource type="Script" path="res://scenes/scroll-threats.gd" id="2_7amn7"] -[ext_resource type="Script" path="res://table/table.gd" id="3_u1k3o"] +[ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_m3no0"] +[ext_resource type="Script" path="res://scenes/scroll-threats.gd" id="2_empn3"] +[ext_resource type="Script" path="res://table/table.gd" id="3_4bupu"] [node name="frm_threats" type="NinePatchRect"] size_flags_horizontal = 3 size_flags_vertical = 3 -texture = ExtResource("1_sbj4k") +texture = ExtResource("1_m3no0") patch_margin_left = 15 patch_margin_top = 30 patch_margin_right = 15 @@ -31,9 +31,9 @@ offset_left = 4.0 offset_top = 51.0 offset_right = 476.0 offset_bottom = 282.0 -script = ExtResource("2_7amn7") +script = ExtResource("2_empn3") [node name="table" type="GridContainer" parent="scroll"] layout_mode = 2 columns = 4 -script = ExtResource("3_u1k3o") +script = ExtResource("3_4bupu") diff --git a/scenes/grd_btns.tscn b/scenes/grd_btns.tscn index 7d129891..a07c67a7 100644 --- a/scenes/grd_btns.tscn +++ b/scenes/grd_btns.tscn @@ -1,105 +1,105 @@ [gd_scene load_steps=2 format=3 uid="uid://cnkbk53mi7viu"] -[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="1_ufj4t"] +[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="1_uiv1n"] [node name="grd_btns" type="GridContainer"] offset_right = 1096.0 offset_bottom = 54.0 columns = 14 -[node name="btn_off" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_off" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Откл." pressed = true -metadata/rfi_name = "" +metadata/rfi_name = "off" -[node name="btn_auto_rfi" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_auto_rfi" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Автомат" -metadata/rfi_name = "" +metadata/rfi_name = "auto" -[node name="btn_p12" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p12" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "МЧМ-1" metadata/rfi_name = "mchm1" -[node name="btn_p16" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p16" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "СРН-И1" metadata/rfi_name = "srni1" -[node name="btn_p15" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p15" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "СРН-М2" metadata/rfi_name = "srnm2" -[node name="btn_p14" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p14" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "ПД-М4" metadata/rfi_name = "pdm4" -[node name="btn_p13" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p13" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "ПД-М2" metadata/rfi_name = "pdm2" -[node name="btn_p11" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p11" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "ЛЧМ-1" metadata/rfi_name = "lchm1" -[node name="btn_p10" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p10" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "ПД-М4С" metadata/rfi_name = "pdm4s" -[node name="btn_p9" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p9" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "ПД-ЧМ" metadata/rfi_name = "pdchm" -[node name="btn_p8" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p8" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "СВ-И1" metadata/rfi_name = "svi1" -[node name="btn_p7" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p7" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "K1" metadata/rfi_name = "k1" -[node name="btn_p6" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p6" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "СВ-М2" metadata/rfi_name = "svm2" -[node name="btn_p5" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_ufj4t")] +[node name="btn_p5" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_uiv1n")] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 diff --git a/scenes/grd_side.tscn b/scenes/grd_side.tscn index 30252959..78363883 100644 --- a/scenes/grd_side.tscn +++ b/scenes/grd_side.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=3 uid="uid://dem3fcec25awh"] -[ext_resource type="PackedScene" uid="uid://bsd67ktk8xp5a" path="res://scenes/frm_threats.tscn" id="1_fxbx3"] -[ext_resource type="PackedScene" uid="uid://t54wukutvmjq" path="res://scenes/frm_params.tscn" id="2_2jld7"] -[ext_resource type="PackedScene" uid="uid://7rvw671tlx2i" path="res://scenes/frm_ecm_list.tscn" id="3_lrpuw"] -[ext_resource type="PackedScene" uid="uid://b1o10yvgjpb0j" path="res://scenes/frm_ecm_params.tscn" id="4_tqj2i"] +[ext_resource type="PackedScene" uid="uid://bsd67ktk8xp5a" path="res://scenes/frm_threats.tscn" id="1_swvxc"] +[ext_resource type="PackedScene" uid="uid://t54wukutvmjq" path="res://scenes/frm_params.tscn" id="2_1dbju"] +[ext_resource type="PackedScene" uid="uid://7rvw671tlx2i" path="res://scenes/frm_ecm_list.tscn" id="3_pdajn"] +[ext_resource type="PackedScene" uid="uid://b1o10yvgjpb0j" path="res://scenes/frm_ecm_params.tscn" id="4_pmt7h"] [node name="grd_side" type="GridContainer"] offset_left = 1112.0 @@ -11,14 +11,14 @@ offset_top = 6.0 offset_right = 1592.0 offset_bottom = 1169.0 -[node name="frm_threats" parent="." instance=ExtResource("1_fxbx3")] +[node name="frm_threats" parent="." instance=ExtResource("1_swvxc")] layout_mode = 2 -[node name="frm_params" parent="." instance=ExtResource("2_2jld7")] +[node name="frm_params" parent="." instance=ExtResource("2_1dbju")] layout_mode = 2 -[node name="frm_ecm_list" parent="." instance=ExtResource("3_lrpuw")] +[node name="frm_ecm_list" parent="." instance=ExtResource("3_pdajn")] layout_mode = 2 -[node name="frm_ecm_params" parent="." instance=ExtResource("4_tqj2i")] +[node name="frm_ecm_params" parent="." instance=ExtResource("4_pmt7h")] layout_mode = 2 diff --git a/scenes/scroll-ecm-list.gd b/scenes/scroll-ecm-list.gd new file mode 100644 index 00000000..94086e60 --- /dev/null +++ b/scenes/scroll-ecm-list.gd @@ -0,0 +1,49 @@ +extends ScrollContainer + + +## Отображает список помех в таблице. +const CellLineEdit = preload('res://scenes/ячейка-2.tscn') ## Ячейка таблицы. +const TableHeader = preload('res://table/header.tscn') ## Ячейка заголовок таблицы. + +const TABLE_HEADER = [ TableHeader, TableHeader, TableHeader, TableHeader , TableHeader ] ## Описание ряда заголовка. +const TABLE_ROW = [ CellLineEdit, CellLineEdit, CellLineEdit, CellLineEdit , CellLineEdit ] ## Описание ряда. +const TABLE_HEADERS_TEXT = ['Номер', 'Название', 'Частота, МГц', 'Пеленг', 'Состояние' ] ## Заголовки таблицы. +const TABLE_COLUMN_SIZE = [ 65, 80, 120, 80, 90 ] ## Ширины колонок. + +## Состояние выполнения сеанса помехи +const INTERFER_STATE = { + 0: 'Подготовка', + 1: 'Выполняется', + 2: 'Ошибка', + 3: 'Занято', + 4: 'Неисправность', + 5: 'Передача' } + +## Индексы колонок +const COLUMN_NUMBER = 0 +const COLUMN_NAME = 1 +const COLUMN_FREQ = 2 +const COLUMN_AOA = 3 +const COLUMN_STATE = 4 + +# Called when the node enters the scene tree for the first time. +func _ready(): + var table_index: = Dictionary() + signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind(table_index)) + call_deferred('init_table') + + +func init_table(): + $table.set_header(TABLE_HEADER) + $table.set_header_text(TABLE_HEADERS_TEXT) + $table.set_columns_min_size(TABLE_COLUMN_SIZE) + $table.pin_header(self, get_parent()) + + +func on_interfer_new(ecm, table_index): + print_debug() + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/scenes/scroll-threats.gd b/scenes/scroll-threats.gd index 45d57911..2c655892 100644 --- a/scenes/scroll-threats.gd +++ b/scenes/scroll-threats.gd @@ -22,6 +22,7 @@ func on_row_pressed(i_row: int): signaller.emit_signal('threat_selected', threat) + func init_table(): $table.set_header(TABLE_HEADER) $table.set_header_text(TABLE_HEADERS_TEXT) @@ -34,6 +35,7 @@ func _ready() -> void: threats.connect('threat_new', Callable(self, 'on_threat_new').bind(table_index)) threats.connect('threat_lost', Callable(self, 'on_threat_lost').bind(table_index)) threats.connect('threat_update', Callable(self, 'on_threat_update').bind(table_index)) + signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel').bind($table)) $table.connect('row_pressed', Callable(self, 'on_row_pressed')) call_deferred('init_table') @@ -80,3 +82,13 @@ func map_th_to_row(th) -> Array: row[i_col] = '%s' % th.get(param_name) i_col += 1 return row + + +## Выделяет выбранную цель в таблице +func on_rto_threat_sel(bip, tbl): + for i in tbl.get_rows_count(): + var node = tbl.get_node2(0, i) + if node.text.to_int() == bip.name.to_int(): + on_row_pressed(i) + break + diff --git a/scenes/tab-switch.tscn b/scenes/tab-switch.tscn index a580ec7f..70716090 100644 --- a/scenes/tab-switch.tscn +++ b/scenes/tab-switch.tscn @@ -1,32 +1,32 @@ [gd_scene load_steps=7 format=3 uid="uid://3slb0i3pvowc"] -[ext_resource type="Script" path="res://scenes/tab-switch.gd" id="1_qroqt"] -[ext_resource type="PackedScene" uid="uid://b276iygic5itk" path="res://scenes/работа.tscn" id="2_pdbvn"] -[ext_resource type="PackedScene" uid="uid://lwmw4egynmd1" path="res://scenes/контроль.tscn" id="3_2apbp"] -[ext_resource type="PackedScene" uid="uid://trt0q8th3bn2" path="res://scenes/журнал.tscn" id="4_yq6c0"] -[ext_resource type="PackedScene" uid="uid://dab6loryocc73" path="res://scenes/эмс.tscn" id="5_tlyql"] -[ext_resource type="PackedScene" uid="uid://bnptm4rlp60dq" path="res://scenes/настройки.tscn" id="6_rxq15"] +[ext_resource type="Script" path="res://scenes/tab-switch.gd" id="1_fg0vd"] +[ext_resource type="PackedScene" uid="uid://b276iygic5itk" path="res://scenes/работа.tscn" id="2_u7p16"] +[ext_resource type="PackedScene" uid="uid://lwmw4egynmd1" path="res://scenes/контроль.tscn" id="3_txp0s"] +[ext_resource type="PackedScene" uid="uid://trt0q8th3bn2" path="res://scenes/журнал.tscn" id="4_cu5k8"] +[ext_resource type="PackedScene" uid="uid://dab6loryocc73" path="res://scenes/эмс.tscn" id="5_u71bh"] +[ext_resource type="PackedScene" uid="uid://bnptm4rlp60dq" path="res://scenes/настройки.tscn" id="6_i8iv3"] [node name="tab_switch" type="TabContainer"] offset_right = 1600.0 offset_bottom = 1200.0 -script = ExtResource("1_qroqt") +script = ExtResource("1_fg0vd") -[node name="Работа" parent="." instance=ExtResource("2_pdbvn")] +[node name="Работа" parent="." instance=ExtResource("2_u7p16")] layout_mode = 2 -[node name="Контроль" parent="." instance=ExtResource("3_2apbp")] +[node name="Контроль" parent="." instance=ExtResource("3_txp0s")] visible = false layout_mode = 2 -[node name="Журнал" parent="." instance=ExtResource("4_yq6c0")] +[node name="Журнал" parent="." instance=ExtResource("4_cu5k8")] visible = false layout_mode = 2 -[node name="ЭМС" parent="." instance=ExtResource("5_tlyql")] +[node name="ЭМС" parent="." instance=ExtResource("5_u71bh")] visible = false layout_mode = 2 -[node name="Настройки" parent="." instance=ExtResource("6_rxq15")] +[node name="Настройки" parent="." instance=ExtResource("6_i8iv3")] visible = false layout_mode = 2 diff --git a/scenes/работа.gd b/scenes/работа.gd index 5fd2f85e..ae90a2ea 100644 --- a/scenes/работа.gd +++ b/scenes/работа.gd @@ -71,6 +71,8 @@ func _ready(): threats.connect('threat_update', Callable(self, 'on_threat_update')) call_deferred('_on_btn_scale_pressed') signaller.connect('zoom_complete', Callable(self, '_on_zoom_complete')) + signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel')) + signaller.connect('threat_selected', Callable(self, 'on_threat_selected')) ## Производит отображение цели на диаграмму @@ -106,6 +108,23 @@ func on_threat_lost(th) -> void: bip.free() +## Обработчик выбора РТО цели +func on_rto_threat_sel(bip): + var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) + for item in bips: + item.set_sel_visible(false) + bip.set_sel_visible(true) + + +func on_threat_selected(th): + var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) + for item in bips: + if th.id == item.name.to_int(): + item.set_sel_visible(true) + else: + item.set_sel_visible(false) + + ## Обработчик нажатия кнопки "Строб". Управляет отображением строба func on_button_strobe_pressed() -> void: drag_fsm = DragFSM.IDLE if $btn_strob.is_pressed() else DragFSM.OFF @@ -115,6 +134,7 @@ func on_button_strobe_pressed() -> void: ## Поведение радиокнопок в группе. Управляет состоянием кнопок в радиогруппе func on_button_pressed(btn_this, btn_others) -> void: for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other) + signaller.emit_signal('interfer_init', btn_this) ## Возвращает ширину строба по направлению diff --git a/scenes/работа.tscn b/scenes/работа.tscn index 15a41598..23163e61 100644 --- a/scenes/работа.tscn +++ b/scenes/работа.tscn @@ -1,16 +1,16 @@ [gd_scene load_steps=13 format=3 uid="uid://b276iygic5itk"] -[ext_resource type="Script" path="res://scenes/работа.gd" id="1_vmjjl"] -[ext_resource type="PackedScene" uid="uid://nl1vklubr5kr" path="res://scenes/bip.tscn" id="2_ew6j4"] -[ext_resource type="PackedScene" uid="uid://dem3fcec25awh" path="res://scenes/grd_side.tscn" id="3_7lxgd"] -[ext_resource type="PackedScene" uid="uid://cnkbk53mi7viu" path="res://scenes/grd_btns.tscn" id="5_0a5o3"] -[ext_resource type="PackedScene" uid="uid://dymo732qc2doa" path="res://scenes/count_all_pad.tscn" id="6_l7wyl"] -[ext_resource type="PackedScene" uid="uid://bwti82byphl68" path="res://scenes/count_danger_pad.tscn" id="7_f41cy"] -[ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/canvas.tscn" id="7_pvt8f"] -[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="8_r2k1p"] -[ext_resource type="PackedScene" uid="uid://0uqi1ghf7sma" path="res://scenes/btn_scale.tscn" id="8_xddop"] -[ext_resource type="PackedScene" uid="uid://bbq6nklh36yij" path="res://scenes/tilemap.tscn" id="10_wpi4s"] -[ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="11_7ohqv"] +[ext_resource type="Script" path="res://scenes/работа.gd" id="1_niok4"] +[ext_resource type="PackedScene" uid="uid://nl1vklubr5kr" path="res://scenes/bip.tscn" id="2_br3s6"] +[ext_resource type="PackedScene" uid="uid://dem3fcec25awh" path="res://scenes/grd_side.tscn" id="3_s2j0e"] +[ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/canvas.tscn" id="4_lryxs"] +[ext_resource type="PackedScene" uid="uid://cnkbk53mi7viu" path="res://scenes/grd_btns.tscn" id="5_2jnbs"] +[ext_resource type="PackedScene" uid="uid://dymo732qc2doa" path="res://scenes/count_all_pad.tscn" id="6_e3re7"] +[ext_resource type="PackedScene" uid="uid://bwti82byphl68" path="res://scenes/count_danger_pad.tscn" id="7_2arls"] +[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="8_k0iv2"] +[ext_resource type="PackedScene" uid="uid://0uqi1ghf7sma" path="res://scenes/btn_scale.tscn" id="9_oey3x"] +[ext_resource type="PackedScene" uid="uid://bbq6nklh36yij" path="res://scenes/tilemap.tscn" id="10_gtwyg"] +[ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="11_ekapd"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_idugi"] resource_local_to_scene = true @@ -18,8 +18,8 @@ shader = ExtResource("11_7ohqv") shader_parameter/radius = 0.39 [node name="Работа" type="Panel"] -script = ExtResource("1_vmjjl") -Bip = ExtResource("2_ew6j4") +script = ExtResource("1_niok4") +Bip = ExtResource("2_br3s6") col_grey = Color(0.34902, 0.643137, 0.772549, 0.168627) col_red = Color(1, 0.568627, 0.431373, 0.239216) drag_scale_band = 0.05 @@ -36,7 +36,7 @@ strob_min_width = 5.0 metadata/_edit_vertical_guides_ = [] metadata/_edit_lock_ = true -[node name="grd_side" parent="." instance=ExtResource("3_7lxgd")] +[node name="grd_side" parent="." instance=ExtResource("3_s2j0e")] layout_mode = 0 offset_left = 1114.0 offset_top = 7.0 @@ -50,7 +50,7 @@ material = SubResource("ShaderMaterial_idugi") [node name="canvas" parent="." instance=ExtResource("7_pvt8f")] metadata/_edit_lock_ = true -[node name="grd_btns" parent="." instance=ExtResource("5_0a5o3")] +[node name="grd_btns" parent="." instance=ExtResource("5_2jnbs")] layout_mode = 0 offset_left = 10.0 offset_top = 1116.0 @@ -58,14 +58,14 @@ offset_right = 1106.0 offset_bottom = 1170.0 metadata/_edit_lock_ = true -[node name="count_all_pad" parent="." instance=ExtResource("6_l7wyl")] +[node name="count_all_pad" parent="." instance=ExtResource("6_e3re7")] layout_mode = 0 offset_left = 100.0 offset_top = 117.0 offset_right = 133.0 offset_bottom = 140.0 -[node name="count_danger_pad" parent="." instance=ExtResource("7_f41cy")] +[node name="count_danger_pad" parent="." instance=ExtResource("7_2arls")] layout_mode = 0 offset_left = 96.0 offset_top = 29.0 @@ -97,7 +97,7 @@ offset_right = 83.0 offset_bottom = 72.0 text = "Опасных:" -[node name="btn_auto_threat" parent="." instance=ExtResource("8_r2k1p")] +[node name="btn_auto_threat" parent="." instance=ExtResource("8_k0iv2")] layout_mode = 0 offset_left = 1034.0 offset_top = 7.0 @@ -107,7 +107,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 text = "Автомат" -[node name="btn_strob" parent="." instance=ExtResource("8_r2k1p")] +[node name="btn_strob" parent="." instance=ExtResource("8_k0iv2")] layout_mode = 2 offset_left = 1034.0 offset_top = 67.0 @@ -118,7 +118,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" text = "Строб" -[node name="btn_view" parent="." instance=ExtResource("8_r2k1p")] +[node name="btn_view" parent="." instance=ExtResource("8_k0iv2")] layout_mode = 2 offset_left = 874.0 offset_top = 1023.0 diff --git a/scripts/capsrpb.gd b/scripts/capsrpb.gd index aef472a6..2ff95e33 100644 --- a/scripts/capsrpb.gd +++ b/scripts/capsrpb.gd @@ -15,10 +15,12 @@ class CapsRpb: signal parse_error(unit: CapsRpb, msg: String) ## Сигнал ошибки разбора сообщения static var json_conv: = JSON.new() - var online: = false ## Состояние связи с источником сообщений - var name: String ## Имя экземпляра - var json_dic: Dictionary ## Аппарат для разбора сообщений - var tick: = 0 ## Тик время последнего обновления, мс + var online: = false ## Состояние связи с источником сообщений + var name: String ## Имя экземпляра + var json_dic: Dictionary ## Аппарат для разбора сообщений + var tick: = 0 ## Тик время последнего обновления, мс + var tx_data: = PackedByteArray() ## Пакет для отправки + var tx_stack: Array ## Массив пакетов для отправки func _to_string() -> String: return String('капсрпб: "%s" %s ' % [self.name, ['отключен', 'на связи'][int(online)]]) func _init(nm): self.name = nm @@ -40,3 +42,9 @@ class CapsRpb: if online and ((now_tick - tick) > ONLINE_TIMEOUT): online = false emit_signal('line_changed', self) + if len(tx_stack): + tx_data = tx_stack[0] + tx_stack.remove_at(0) + return Error.OK + else: + return Error.ERR_UNAVAILABLE diff --git a/scripts/interfer.gd b/scripts/interfer.gd index b03cb621..ac5a85f1 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -2,14 +2,6 @@ extends Node ## Представление помехи -## Состояние выполнения сеанса помехи -const INTERFER_STATE = { - 0: 'идёт подготовка к выполнению', - 1: 'выполняется', - 2: 'не выполнена по причине ошибки в команде', - 3: 'не выполнена по причине занятости', - 4: 'не выполнена по причине_неисправности' } - ## Режимы помехи const ITERFER_MODE = { @@ -26,19 +18,39 @@ const ITERFER_MODE = { 'k1': ['K1', ['freq', 'width', 'dur', 'period']], 'ozp1': ['ОЗП-1', ['freq', 'width']] } +const ID_INTERFERS_LEN = 63 ## Размер пула номеров целей +var msg_ss: int = 0 ## счётчик сообщений +var id_array: Array ## Массив id воздействий +var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия + ## Сеанс помехи class Interfer: var ss: int = 0 ## Счётчик сообщений. var ispp: int = 0 ## Индекс сеанса. - var state: = 0 ## Состояние сеанса. Ответ КАПСРПБ. Возможные значения в [param ITERFER_STATE]. + var svk: = 0 ## Состояние сеанса. Ответ КАПСРПБ. Возможные значения в [param ITERFER_STATE]. var krp: String = '' ## Тип помехи. Возможные значения в [param INTERFER_MODE]. var powp: float = 0.0 ## Мощность излучения выраженная в процентах. var kni: = 0.0 ## Курсовой угол направления излучения. var params: = {} ## Параметры помехи. var get: Array[String] ## Запрос массива параметров (список запрошенных параметров). var retss: int ## Значение счётчика сообщения в котором был произведён запрос массива параметров. + var tick_rx: int ## Тик время обновления цели, мс. + func get_msg6_data(): + var data_to_json : Dictionary = {} + data_to_json['ts'] = 6 + data_to_json['ss'] = ss + data_to_json['ispp'] = ispp + data_to_json['krp'] = krp + if krp != 'off': + data_to_json['kni'] = kni + data_to_json['powp'] = powp # Необходимо добавить управление мощностью + data_to_json['get'] = [] + data_to_json['params'] = params + var json = JSON.new().stringify(data_to_json) + var pac = json.to_utf8_buffer() + return pac func set_from_dic(dic: Dictionary): var names: = tools.get_members_names(self) @@ -49,10 +61,18 @@ signal interfer_preparing(ecm: Interfer) ## Вызывается в м signal interfer_run(ecm: Interfer) ## Вызывается в момент начала работы помехи. signal interfer_error(ecm: Interfer, msg: String) ## Вызывается при ошибке. signal interfer_update(ecm: Interfer) ## Вызывается при обновлении помехи. -signal interfer_new(ecm: Interfer) ## Вызывается при создании новой помехи. signal interfer_resized(ecms: Dictionary) ## Вызывается при изменении количества сеансов помех. +func _ready(): + var ecms: Dictionary = {} ## Словарь помех + for i in range(ID_INTERFERS_LEN): # Заполняет массив ID целей + id_array.append(i+1) + var unit_key = repsettings.get_unit_key('уарэп-капсрпб-отп') + var unit = repnetwork.units[unit_key] + signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit, ecms)) + + ## Производит приём состояния помех. [param unit] -> [param ecms] func on_data_capsrpb_received(unit: capsrpb.CapsRpb, ecms: Dictionary): if not unit.json_dic.has('ts'): return @@ -77,6 +97,53 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, ecms: Dictionary): ecm.set_from_dic(dic_msvk) ecms[ispp] = ecm ecm.tick_rx = unit.tick - call_deferred('emit_signal', 'interfer_new', ecm) if sz != ecms.size(): call_deferred('emit_signal', 'interfer_resized', ecms) + + +## Вызыватся, когда пользователь выбрал помеху и выбраны цели +func on_interfer_create(btn, sel_threats, unit, ecms): + for item in sel_threats: + var ispp: int = 0 + var interfer_name: String = btn.get_meta('rfi_name') + var param: Dictionary = {} + var kni: float = item.aoa + param['freq'] = item.freq + param['width'] = item.width + if interfer_name == 'k1': + param['dur'] = 1.0 # Необходимо добавить параметры управления + param['period'] = 1.0 # Необходимо добавить параметры управления + var key = thrs.find_key(item.id) + if key != null: + ispp = key + else: + ispp = pop_id() + if ispp == 0: return + msg_ss += 1 + var ecm: Interfer + if ecms.has(ispp): + ecm = ecms[ispp] + else: + ecm = Interfer.new() + ecm.ispp = ispp + ecm.ss = msg_ss + ecm.kni = kni + ecm.krp = interfer_name + ecm.params = param + ecm.powp = 100.0 # Необходимо добавить управление мощностью + thrs[ispp] = item.id + var json_data = ecm.get_msg6_data() + unit.tx_stack.append(json_data) + signaller.emit_signal('interfer_new', ecm) + + +func pop_id(): + var id = 0 + if len(id_array): + id = id_array[0] + id_array.remove_at(0) + return id + + +func push_id(id : int): + id_array.append(id) diff --git a/scripts/repnetwork.gd b/scripts/repnetwork.gd index 52e64138..5fd74d9b 100644 --- a/scripts/repnetwork.gd +++ b/scripts/repnetwork.gd @@ -68,6 +68,6 @@ func _process(_delta: float) -> void: for addr in units: var unit = units[addr] match unit.process(tick): - Error.OK: sock_unicast.send_to(addr, unit.data_tx) + Error.OK: sock_unicast.send_to(addr, unit.tx_data) Error.FAILED: emit_signal('socket_error', 'ошибка: %s %s:%d' % [unit, addr[0], addr[1]]) poll_sockets.any(func(sock): poll_receive(sock, tick)) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index eaf8aeeb..ca395a5b 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -5,7 +5,7 @@ class_name Signaller extends Node ## два и более узла, из разных файлов. -## Вызывается, когда оператор выбирает цель. +## Вызывается, когда оператор выбирает цель в таблице. ## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель [br] ## [param th] - Выбранная цель [br] signal threat_selected(threats: Dictionary, th) @@ -22,6 +22,26 @@ signal threat_unselected(threats: Dictionary, th) signal full_screen(id: int) +## Вызывается, когда пользователь выбирает цель +## [param bip] - Отметка цели на экране +signal rto_threat_sel (bip: Control) + + +## Вызывается, когда пользователь выбирает помеху +## [param btn] - Нажатая кнопка помехи +signal interfer_init (btn: PanelContainer) + + +## Вызывается, когда выбраны цели для постановки помех +## [param btn] - Нажатая кнопка помехи, [param sel_threats] - список целей +signal interfer_create (btn: PanelContainer, sel_threats: Array) + + +## Вызывается, когда создалась новая помеха +## [param ecm] - Новая помеха +signal interfer_new (ecm: interfer.Interfer) + + ## Вызывается при запросе изменения уровня детализации карты ## [param zoom] - Вновь установленный уровень детализации signal zoom_changed(zoom: int) diff --git a/scripts/threats.gd b/scripts/threats.gd index 5bafd721..97c22f2e 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -26,6 +26,7 @@ class Threat: var tick_rx: int ## Тик время обновления цели, мс. var tmod: String ## Тип модуляции. var width: float ## Ширина занимаемого диапазона частот, МГц. + var selected: bool ## Флаг, что цель выбрана func _init(): clear_fflags() func _to_string() -> String: return ': номер:%d пеленг:%0.1f частота:%0.1f МГц' % [id, aoa, freq] @@ -52,7 +53,9 @@ func _ready() -> void: unit.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(threats)) timer_check_lost.connect('timeout', Callable(self, 'on_timer_check_lost').bind(repsettings.ThreatParams.time_lost, threats)) timer_check_lost.start(repsettings.ThreatParams.time_lost / 1000.0) - + signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel').bind(threats)) + signaller.connect('threat_selected', Callable(self, 'on_threat_selected').bind(threats)) + signaller.connect('interfer_init', Callable(self, 'on_interfer_init').bind(threats)) ## Периодически удаляет устаревшие цели func on_timer_check_lost(time_lost: int, threats: Dictionary): @@ -66,6 +69,31 @@ func on_timer_check_lost(time_lost: int, threats: Dictionary): call_deferred('emit_signal', 'threats_resized', threats) +## Выбирает цель, если нажать по отметке цели. +func on_rto_threat_sel(bip, threats): + for threat in threats.values(): + threat.selected = false + threats[bip.name.to_int()].selected = true + + +## Выбирает цель, если выбрать в таблице +func on_threat_selected(th, threats): + for threat in threats.values(): + threat.selected = false + th.selected = true + + +## Формирует список выбранных целей для включения помехи +func on_interfer_init(btn, threats): + var sel_threats: Array = [] + for threat in threats.values(): + if threat.selected: + sel_threats.append(threat) + if len(sel_threats): + signaller.emit_signal('interfer_create', btn, sel_threats) + + + ## Производит приём целей func on_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary): if not unit.json_dic.has('ts'): return diff --git a/shaders/select_tr.gdshader b/shaders/select_tr.gdshader index 8bf2e88f..ea13dfd9 100644 --- a/shaders/select_tr.gdshader +++ b/shaders/select_tr.gdshader @@ -2,8 +2,8 @@ shader_type canvas_item; uniform vec4 color: source_color = vec4(1, 1, 1, 1); uniform vec4 color_up: source_color = vec4(1, 1, 1, 1); /* Цвет вспышки при обновлении */ -const float ds = 0.00725; /* Относительное расстояние на котором выполняется сглаживание краёв */ -const float dsr = 6.125; +const float ds = 0.01425; /* Относительное расстояние на котором выполняется сглаживание краёв */ +const float dsr = 12.125; const vec2 center = vec2(0.5, 0.5); /* Центр должен быть в (0.5, 0.5), но это не так */ const float radius = 0.075 - ds * 2.0; /* Радиус должен быть 0.5, но это не так */ diff --git a/shaders/tracked.gdshader b/shaders/tracked.gdshader index 211e0652..db8e7c8a 100644 --- a/shaders/tracked.gdshader +++ b/shaders/tracked.gdshader @@ -10,7 +10,7 @@ uniform vec2 point_7; uniform vec2 point_8; uniform float len: hint_range(0.0, 1.0) = 0.5; const vec2 center = vec2(0.125, 0.125); -const float DSS = 0.001225; +const float DSS = 0.002525; const float radius = 0.125; uniform float speed: hint_range(0.0, 1024.0) = 0.0;