Доработка, обработка нажатий на цели и выбор цели в таблице.

This commit is contained in:
MaD_CaT
2023-11-09 11:07:57 +03:00
parent c067e36e6f
commit 67942886d3
13 changed files with 133 additions and 77 deletions

View File

@@ -11,5 +11,10 @@ func _process(delta):
pass
func _on_pressed():
print_debug('Click')
# Функция делает присваивает заданое значение видимости селектору
func set_sel_visible(value: bool):
$selector.visible = value
func _on_bip_pressed():
signaller.emit_signal('rto_threat_sel', self)

View File

@@ -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_dag5j"]
[ext_resource type="Shader" path="res://shaders/bip.gdshader" id="2_7w7lp"]
[ext_resource type="Shader" path="res://shaders/tracked.gdshader" id="3_p7omr"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2dulj"]
shader = ExtResource("2_w4jcf")
shader = ExtResource("2_7w7lp")
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_p7omr")
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 = 40.0
offset_bottom = 40.0
script = ExtResource("1_dag5j")
[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"]

View File

@@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://0uqi1ghf7sma"]
[ext_resource type="Texture2D" uid="uid://c1maea6yhd3k7" path="res://data/кнопка-масштаб.png" id="1_r871k"]
[ext_resource type="Texture2D" uid="uid://c1maea6yhd3k7" path="res://data/кнопка-масштаб.png" id="1_qmk0r"]
[node name="btn_scale" type="TextureButton"]
self_modulate = Color(1, 1, 1, 0.509804)
@@ -8,7 +8,7 @@ offset_right = 152.0
offset_bottom = 18.0
tooltip_text = "Измененяет масштаб"
action_mode = 0
texture_normal = ExtResource("1_r871k")
texture_normal = ExtResource("1_qmk0r")
ignore_texture_size = true
stretch_mode = 0
metadata/i_scale = 0

View File

@@ -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_41nty"]
[ext_resource type="Script" path="res://scenes/canvas.gd" id="2_ci66x"]
[ext_resource type="PackedScene" uid="uid://c73ahpv8uiuc7" path="res://scenes/sector.tscn" id="3_4r7tl"]
[ext_resource type="Shader" path="res://shaders/sector.gdshader" id="4_4000y"]
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"]
size = Vector2(1600, 1200)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vipcu"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_uqrmv"]
resource_local_to_scene = true
shader = ExtResource("4_nkch3")
shader = ExtResource("4_4000y")
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_41nty")
texture = SubResource("PlaceholderTexture2D_2bft1")
centered = false
script = ExtResource("2_5wost")
script = ExtResource("2_ci66x")
[node name="строб" parent="." instance=ExtResource("3_rminv")]
material = SubResource("ShaderMaterial_vipcu")
[node name="строб" parent="." instance=ExtResource("3_4r7tl")]
material = SubResource("ShaderMaterial_uqrmv")
position = Vector2(560, 560)
scale = Vector2(1100, 1100)

View File

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

View File

@@ -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_ddefd"]
[ext_resource type="PackedScene" uid="uid://b276iygic5itk" path="res://scenes/работа.tscn" id="2_dgwu2"]
[ext_resource type="PackedScene" uid="uid://lwmw4egynmd1" path="res://scenes/контроль.tscn" id="3_wh23t"]
[ext_resource type="PackedScene" uid="uid://trt0q8th3bn2" path="res://scenes/журнал.tscn" id="4_38go3"]
[ext_resource type="PackedScene" uid="uid://dab6loryocc73" path="res://scenes/эмс.tscn" id="5_qasm0"]
[ext_resource type="PackedScene" uid="uid://bnptm4rlp60dq" path="res://scenes/настройки.tscn" id="6_h83md"]
[node name="tab_switch" type="TabContainer"]
offset_right = 1600.0
offset_bottom = 1200.0
script = ExtResource("1_qroqt")
script = ExtResource("1_ddefd")
[node name="Работа" parent="." instance=ExtResource("2_pdbvn")]
[node name="Работа" parent="." instance=ExtResource("2_dgwu2")]
layout_mode = 2
[node name="Контроль" parent="." instance=ExtResource("3_2apbp")]
[node name="Контроль" parent="." instance=ExtResource("3_wh23t")]
visible = false
layout_mode = 2
[node name="Журнал" parent="." instance=ExtResource("4_yq6c0")]
[node name="Журнал" parent="." instance=ExtResource("4_38go3")]
visible = false
layout_mode = 2
[node name="ЭМС" parent="." instance=ExtResource("5_tlyql")]
[node name="ЭМС" parent="." instance=ExtResource("5_qasm0")]
visible = false
layout_mode = 2
[node name="Настройки" parent="." instance=ExtResource("6_rxq15")]
[node name="Настройки" parent="." instance=ExtResource("6_h83md")]
visible = false
layout_mode = 2

View File

@@ -17,7 +17,6 @@ var map_bcs: Vector3 ## Яркость, контра
func _ready():
# Create an HTTP request node and connect its completion signal.
var tile = mercantile.Tile.new()
print_debug('Плитка: %s %s' % [tile, tile.is_valid()])
var http_request = HTTPRequest.new()
add_child(http_request)
http_request.request_completed.connect(self._http_request_completed)

View File

@@ -64,6 +64,8 @@ func _ready():
threats.connect('threat_lost', Callable(self, 'on_threat_lost'))
threats.connect('threats_resized', Callable(self, 'on_threats_resized'))
threats.connect('threat_update', Callable(self, 'on_threat_update'))
signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel'))
signaller.connect('threat_selected', Callable(self, 'on_threat_selected'))
## Производит отображение цели на диаграмму
@@ -99,6 +101,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

View File

@@ -1,25 +1,25 @@
[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_rb8fv"]
[ext_resource type="PackedScene" uid="uid://nl1vklubr5kr" path="res://scenes/bip.tscn" id="2_1ntlf"]
[ext_resource type="PackedScene" uid="uid://dem3fcec25awh" path="res://scenes/grd_side.tscn" id="3_6vmv5"]
[ext_resource type="PackedScene" uid="uid://b5kjdyxuwsot5" path="res://scenes/canvas.tscn" id="4_7dvd8"]
[ext_resource type="PackedScene" uid="uid://cnkbk53mi7viu" path="res://scenes/grd_btns.tscn" id="5_kpx5b"]
[ext_resource type="PackedScene" uid="uid://dymo732qc2doa" path="res://scenes/count_all_pad.tscn" id="6_x6urv"]
[ext_resource type="PackedScene" uid="uid://bwti82byphl68" path="res://scenes/count_danger_pad.tscn" id="7_b0iag"]
[ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="8_cha28"]
[ext_resource type="PackedScene" uid="uid://0uqi1ghf7sma" path="res://scenes/btn_scale.tscn" id="9_e8unk"]
[ext_resource type="PackedScene" uid="uid://bbq6nklh36yij" path="res://scenes/tilemap.tscn" id="10_rp4rk"]
[ext_resource type="Shader" path="res://shaders/tilemap.gdshader" id="11_ked7m"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_whr8j"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_xpefk"]
resource_local_to_scene = true
shader = ExtResource("11_7ohqv")
shader = ExtResource("11_ked7m")
shader_parameter/radius = 0.4
[node name="Работа" type="Panel"]
script = ExtResource("1_vmjjl")
Bip = ExtResource("2_ew6j4")
script = ExtResource("1_rb8fv")
Bip = ExtResource("2_1ntlf")
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_6vmv5")]
layout_mode = 0
offset_left = 1114.0
offset_top = 7.0
@@ -44,10 +44,10 @@ offset_right = 1594.0
offset_bottom = 1170.0
metadata/_edit_lock_ = true
[node name="canvas" parent="." instance=ExtResource("7_pvt8f")]
[node name="canvas" parent="." instance=ExtResource("4_7dvd8")]
metadata/_edit_lock_ = true
[node name="grd_btns" parent="." instance=ExtResource("5_0a5o3")]
[node name="grd_btns" parent="." instance=ExtResource("5_kpx5b")]
layout_mode = 0
offset_left = 10.0
offset_top = 1116.0
@@ -55,14 +55,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_x6urv")]
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_b0iag")]
layout_mode = 0
offset_left = 96.0
offset_top = 29.0
@@ -94,7 +94,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_cha28")]
layout_mode = 0
offset_left = 1034.0
offset_top = 7.0
@@ -104,7 +104,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_cha28")]
layout_mode = 2
offset_left = 1034.0
offset_top = 67.0
@@ -115,7 +115,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_cha28")]
layout_mode = 2
offset_left = 874.0
offset_top = 1023.0
@@ -125,15 +125,15 @@ size_flags_horizontal = 3
size_flags_vertical = 3
text = "Вид"
[node name="btn_scale" parent="." instance=ExtResource("8_xddop")]
[node name="btn_scale" parent="." instance=ExtResource("9_e8unk")]
layout_mode = 0
offset_left = 952.0
offset_top = 1038.0
offset_right = 1104.0
offset_bottom = 1056.0
[node name="tilemap" parent="." instance=ExtResource("10_wpi4s")]
material = SubResource("ShaderMaterial_whr8j")
[node name="tilemap" parent="." instance=ExtResource("10_rp4rk")]
material = SubResource("ShaderMaterial_xpefk")
[connection signal="drag_begin" from="." to="." method="_on_drag_begin"]
[connection signal="drag_continue" from="." to="." method="_on_drag_continue"]

View File

@@ -5,7 +5,7 @@ class_name Signaller extends Node
## два и более узла, из разных файлов.
## Вызывается, когда оператор выбирает цель.
## Вызывается, когда оператор выбирает цель в таблице.
## [param threats] - Словарь. Ключ - идентификатор (номер) цели. Значение - цель [br]
## [param th] - Выбранная цель [br]
signal threat_selected(threats: Dictionary, th)
@@ -20,3 +20,8 @@ signal threat_unselected(threats: Dictionary, th)
## Вызывается, когда пользователь переключает режим окна программы полный экран - оконный
## [param id] - Идентификатор окна. Присваевается вручную
signal full_screen(id: int)
## Вызывается, когда пользователь выбирает цель
## [param bip] - Отметка цели на экране
signal rto_threat_sel (bip: Control)

View File

@@ -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,6 +53,8 @@ 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))
@@ -67,6 +70,20 @@ 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_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary):
if not unit.json_dic.has('ts'): return

View File

@@ -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, но это не так */

View File

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