Merge remote-tracking branch 'MaD_CaT/master'
# Conflicts: # scenes/btn_scale.tscn # scenes/tilemap.gd # scenes/работа.gd # scenes/работа.tscn # scripts/signaller.gd
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 = "<off>"
|
||||
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 = "<auto>"
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
49
scenes/scroll-ecm-list.gd
Normal file
49
scenes/scroll-ecm-list.gd
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
## Возвращает ширину строба по направлению
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 '<Threat>: номер:%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
|
||||
|
||||
@@ -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, но это не так */
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user