From b274a655cdc4f73a9e4d81cae3d5624aee5f09b5 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Mon, 15 Dec 2025 13:52:02 +0300 Subject: [PATCH 01/10] Godot4. Error -> Warn (ShadowNames) --- project.godot | 1 - scenes/работа/работа.tscn | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/project.godot b/project.godot index 39bda023..2c462ba9 100644 --- a/project.godot +++ b/project.godot @@ -74,7 +74,6 @@ gdscript/warnings/unassigned_variable_op_assign=2 gdscript/warnings/unused_signal=0 gdscript/warnings/shadowed_variable=2 gdscript/warnings/shadowed_variable_base_class=2 -gdscript/warnings/shadowed_global_identifier=2 gdscript/warnings/unsafe_cast=1 gdscript/warnings/assert_always_true=2 gdscript/warnings/assert_always_false=2 diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 08aba720..8313ec3b 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -379,12 +379,12 @@ texture_normal = ExtResource("14_ggrwd") [connection signal="drag_continue" from="." to="." method="_on_drag_continue"] [connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"] [connection signal="toggled" from="chk_auto" to="." method="on_value_changed"] -[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"] +[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"] [connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"] [connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"] -[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"] [connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"] +[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"] [connection signal="button_down" from="zoom_minus" to="tilemap" method="_on_zoom_minus_button_down"] [connection signal="button_up" from="zoom_minus" to="tilemap" method="_on_zoom_button_up"] [connection signal="pressed" from="btn_all_work" to="." method="_on_btn_all_work_pressed"] From 45c19973af6f82e89bb3b125fa9243e102c257fb Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 16 Dec 2025 11:19:30 +0300 Subject: [PATCH 02/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=92=D0=BE=D1=81=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D1=81?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 195378f2..3566bb98 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -559,7 +559,7 @@ func set_fs_color(ecms): func update_fs_colors(): - var fs_colors = $canvas.fs_default_colors + var fs_colors = $canvas.fs_default_colors.duplicate() for key in fs_active.keys(): fs_colors[key] = color_ecm for key in fs_emit.keys(): From 3b5bf2ce2cd97d2aea7bd26c6ed17253c0b7ce85 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 16 Dec 2025 11:24:37 +0300 Subject: [PATCH 03/10] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D1=8F?= =?UTF-8?q?=D1=82=D1=8C=20=D1=88=D0=B8=D1=80=D0=B8=D0=BD=D1=83=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D1=81=D1=8B=20=D0=B8=D0=B7=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=B7=20=D0=BD=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B5=D0=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/настройки/настройки.gd | 3 ++- scripts/interfer.gd | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index f01526bd..f219f486 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -63,7 +63,8 @@ const SETTING_TABLE = [ ['уарэп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'], ['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'], ['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], - ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ] ] + ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ], + ['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'], ] ## TODO: Придумать как избавиться от индексов ## Индексы строк таблицы. diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 256571b8..3b255505 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -94,6 +94,8 @@ const INTERFER_OFF = 'off' const INTERFER_IQFILE = 'IQ-файл' const POW_DEFAULT: float = 50.0 const PERIOD_DEFAULT = 7.5 +const MIN_WIDTH_COEF = 1.0 + var msg6_num: int = 0 ## Счётчик сообщений "тип 6" var msg8_num: int = 0 ## Счётчик сообщений "тип 8" var id_array: Array ## Массив id воздействий. @@ -109,6 +111,7 @@ var gos_flag = true ## Флаг работать п var gos_protocols: PackedStringArray ## Список протоколов своих целей var gos_nmfs: Array ## Список номеров блоков ФС для которых запрещена работа var fs_closed: Dictionary ## Словарь секторов запрета +var width_coef: float = 1.5 ## Коэффициент расширения полосы ## Режимы работы АФСП и БПО (Протокол ТНИИС-СТЦ, пункт 2.5.10) @@ -405,7 +408,7 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v kni += 360.0 var id = item.id param['freq'] = item.freq - param['width'] = item.width * 1.5 + param['width'] = item.width * width_coef if (item.rkrp != '') and item.fflags.rkrp and auto_enabled: var krp = get_krp(item) if krp != '': @@ -594,7 +597,7 @@ func on_threats_update(threat, ecms, unit_caps): ecm = ecms[ecm_i] ecm.priority = threat.priority ecm.params['freq'] = threat.freq - var width = threat.width * 1.5 + var width = threat.width * width_coef ecm.params['width'] = width check_width(ecm.params) if (threat.rkrp != '') and threat.fflags.rkrp and auto_enabled: @@ -634,9 +637,9 @@ func set_rparams(threat: threats.Threat, params: Dictionary): else: params['freq'] = threat.freq if threat.rparams.has('width'): - params['width'] = threat.rparams['width'] * 1.5 + params['width'] = threat.rparams['width'] * width_coef else: - params['width'] = threat.width * 1.5 + params['width'] = threat.width * width_coef check_width(params) if threat.rparams.has('filename'): params['filename'] = threat.rparams['filename'] @@ -693,6 +696,9 @@ func on_settings_changed(): gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true) var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '') gos_protocols = protocols.split(",", true) + width_coef = float(ProjectSettings.get_setting('application/config/Коэффициент ширины полосы излучения', 1.5)) + if width_coef < MIN_WIDTH_COEF: + width_coef = MIN_WIDTH_COEF func call_ecm_proc(ecm): From 0d67b086ba1c266c3aa1cb0a869da246f47f1322 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 16 Dec 2025 13:58:41 +0300 Subject: [PATCH 04/10] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=82=D1=83=D0=BB=D1=82=D0=B8=D0=BF=D1=8B?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BC=D0=B5=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/button-flat/nine-patch-button.gd | 6 ++++++ scenes/frame-ecm-list/frm-ecm-list.tscn | 6 ++++++ scenes/grid-buttons-ecm/grid-buttons-ecm.tscn | 16 ++++++++++++++++ scenes/работа/работа.tscn | 5 +++++ scenes/эмс/эмс.tscn | 2 ++ 5 files changed, 35 insertions(+) diff --git a/scenes/button-flat/nine-patch-button.gd b/scenes/button-flat/nine-patch-button.gd index 700abd5b..c3928789 100644 --- a/scenes/button-flat/nine-patch-button.gd +++ b/scenes/button-flat/nine-patch-button.gd @@ -37,6 +37,12 @@ var _pressed: = false $button.set_text(val) +@export var btn_tooltip: String = '': + set(val): + btn_tooltip = val + $button.set_tooltip_text(val) + + @export var disabled: bool = false: set(val): disabled = val diff --git a/scenes/frame-ecm-list/frm-ecm-list.tscn b/scenes/frame-ecm-list/frm-ecm-list.tscn index db6c658e..4084f8d1 100644 --- a/scenes/frame-ecm-list/frm-ecm-list.tscn +++ b/scenes/frame-ecm-list/frm-ecm-list.tscn @@ -57,6 +57,7 @@ size_flags_vertical = 3 tooltip_text = "Включает принудительную помеху" strips_rotation = 15.0 text = "СРН" +btn_tooltip = "Включает подавление радионавигации" metadata/rfi_name = "srn" [node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] @@ -64,8 +65,10 @@ editor_description = "Кнопка для принудительного вкл layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 +tooltip_text = "Включает подавление каналов связи типа JTIDS" strips_rotation = 15.0 text = "JTIDS" +btn_tooltip = "Включает подавление радиосвязи типа JTIDS" metadata/rfi_name = "sprs" [node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] @@ -75,6 +78,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД" strips_rotation = 15.0 text = "КУПД" +btn_tooltip = "Включает подавление каналов управления передачи данных" metadata/rfi_name = "kupd" [node name="btn_panika" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] @@ -84,6 +88,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД" strips_rotation = 15.0 text = "Паника" +btn_tooltip = "Включает подавление JTIDS и КУПД" metadata/rfi_name = "" [node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("4_7ys3c")] @@ -92,4 +97,5 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 15.0 text = "Очистить" +btn_tooltip = "Выключает все сеансы помех" metadata/rfi_name = "" diff --git a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn index d9384518..d5f3919e 100644 --- a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn +++ b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn @@ -13,6 +13,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "Откл." +btn_tooltip = "Выключает помеху" disabled = true metadata/rfi_name = "off" @@ -22,6 +23,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "МЧМ-1" +btn_tooltip = "Включает помеху МЧМ-1" disabled = true metadata/rfi_name = "mchm1" @@ -31,6 +33,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "СРН-И1" +btn_tooltip = "Включает помеху СРН-И1" disabled = true metadata/rfi_name = "srni1" @@ -40,6 +43,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "СРН-М2" +btn_tooltip = "Включает помеху СРН-М2" disabled = true metadata/rfi_name = "srnm2" @@ -49,6 +53,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "СРН-GPS" +btn_tooltip = "Включает помеху СРН-GPS" disabled = true metadata/rfi_name = "srngps" @@ -58,6 +63,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-М4" +btn_tooltip = "Включает помеху МП-М4" disabled = true metadata/rfi_name = "pdm4" @@ -67,6 +73,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-М2" +btn_tooltip = "Включает помеху МП-М2" disabled = true metadata/rfi_name = "pdm2" @@ -76,6 +83,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ЛЧМ-1" +btn_tooltip = "Включает помеху ЛЧМ-1" disabled = true metadata/rfi_name = "lchm1" @@ -85,6 +93,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ЛЧМ-2" +btn_tooltip = "Включает помеху ЛЧМ-2" disabled = true metadata/rfi_name = "lchm2" @@ -94,6 +103,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-М4С" +btn_tooltip = "Включает помеху ПД-М4C" disabled = true metadata/rfi_name = "pdm4s" @@ -103,6 +113,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-ЧМ" +btn_tooltip = "Включает помеху ПД-ЧМ" disabled = true metadata/rfi_name = "pdchm" @@ -112,6 +123,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "СВ-И1" +btn_tooltip = "Включает помеху СВ-И1" disabled = true metadata/rfi_name = "svi1" @@ -121,6 +133,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "K1" +btn_tooltip = "Включает помеху К1" disabled = true metadata/rfi_name = "k1" @@ -130,6 +143,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "СВ-М2" +btn_tooltip = "Включает помеху СВ-М2" disabled = true metadata/rfi_name = "svm2" @@ -139,6 +153,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ОЗП-1" +btn_tooltip = "Включает помеху ОЗП-1" disabled = true metadata/rfi_name = "ozp1" @@ -148,5 +163,6 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 text = "ЕРЛС" +btn_tooltip = "Включает помеху ЕЛРС" disabled = true metadata/rfi_name = "eprls" diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index c08c2b77..89e71eb8 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -179,6 +179,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Строб" +btn_tooltip = null metadata/state = 0 [node name="btn_threats" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")] @@ -188,6 +189,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Цель" +btn_tooltip = null metadata/state = 1 [node name="btn_fs_sector" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")] @@ -197,6 +199,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Сектор" +btn_tooltip = null pressed = true metadata/state = 2 @@ -351,6 +354,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Сек. запрета" +btn_tooltip = null metadata/state = 0 [node name="btn_work" parent="." instance=ExtResource("8_k0iv2")] @@ -364,6 +368,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Сек. работы" +btn_tooltip = null metadata/state = 0 [node name="btn_all_work" type="TextureButton" parent="."] diff --git a/scenes/эмс/эмс.tscn b/scenes/эмс/эмс.tscn index 32717b0e..35c82896 100644 --- a/scenes/эмс/эмс.tscn +++ b/scenes/эмс/эмс.tscn @@ -81,6 +81,7 @@ offset_right = 1583.0 offset_bottom = 85.0 strips_rotation = 10.0 text = "Прочитать" +btn_tooltip = "" [node name="btn_flash_write" parent="." instance=ExtResource("2_eju8r")] layout_mode = 0 @@ -90,6 +91,7 @@ offset_right = 1583.0 offset_bottom = 129.0 strips_rotation = 10.0 text = "Записать" +btn_tooltip = "" [node name="btn_save" type="Button" parent="."] layout_mode = 0 From ef33862d37a6f7f62bab8b511b23cdfa708e21ba Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 16 Dec 2025 14:28:23 +0300 Subject: [PATCH 05/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9D=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8=20=D0=95=D0=9B=D0=A0?= =?UTF-8?q?=D0=A1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/grid-buttons-ecm/grid-buttons-ecm.tscn | 4 ++-- scripts/interfer.gd | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn index d5f3919e..75c6b299 100644 --- a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn +++ b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn @@ -162,7 +162,7 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 30.0 -text = "ЕРЛС" +text = "ЕЛРС" btn_tooltip = "Включает помеху ЕЛРС" disabled = true -metadata/rfi_name = "eprls" +metadata/rfi_name = "elrs" diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 3b255505..6552f18f 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -19,7 +19,7 @@ const ITERFER_MODE = { 'svm2': [INTERFER_IQFILE, SVM2_PARAMS, 21], 'k1': [INTERFER_IQFILE, K1_PARAMS, 50], 'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51], - 'eprls': [INTERFER_IQFILE, EPRLS_PARAMS, 52] } + 'elrs': [INTERFER_IQFILE, ELRS_PARAMS, 52] } const RECOMMEND_INTERFER = { 'ПСП + ФМ-2': 'srni1', @@ -75,7 +75,7 @@ const SVM2_PARAMS = {'files': {1: ['SVM2_LIT2.pcm', 1017], 2: ['SVM2_LIT3.pcm', 1156]}, 'call_proc': 'call_diap', 'par_names' : ['freq', 'filename']} -const EPRLS_PARAMS = {'files' : 'ERLS.pcm', +const ELRS_PARAMS = {'files' : 'ELRS.pcm', 'call_proc' : 'call_all_diap', 'par_names' : ['freq', 'filename']} # Файл : Ключ (ширина): ['имя файла'] From cd72001881251f10e9b8dd1129a8d17ae81b0ab9 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 17 Dec 2025 11:09:02 +0300 Subject: [PATCH 06/10] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8=D1=82?= =?UTF-8?q?=D0=BC=D0=B0=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8.=20=D0=A2=D0=B5=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D1=8C=20=D1=82=D0=B0=D0=B9=D0=BC=D0=B5=D1=80=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8=20=D1=81=D0=B2=D0=BE=D0=B9?= =?UTF-8?q?.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B0=20=D0=B2?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=BF=D0=BE=D0=B2=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=BE=D0=B9=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 1 - scenes/настройки/настройки.gd | 3 +- scenes/работа/работа.tscn | 5 --- scenes/эмс/эмс.tscn | 2 -- scripts/interfer.gd | 66 +++++++++++++++++------------------ 5 files changed, 34 insertions(+), 43 deletions(-) diff --git a/project.godot b/project.godot index dc2a071e..25420430 100644 --- a/project.godot +++ b/project.godot @@ -29,7 +29,6 @@ interfer/default_color0=Color(0.38, 0.47, 0.51, 1) interfer/default_color1=Color(0.39, 0.44, 0.5, 1) interfer/select_color=Color(1, 1, 1, 1) interfer/interfer_color=Color(0.9, 0.1, 0.25, 0.9) -interfer/resend_timeout=1000.0 config/external_cu=false config/unit_rr_request_period=20.0 config/kems_files_path="user://kems/" diff --git a/scenes/настройки/настройки.gd b/scenes/настройки/настройки.gd index f219f486..58dc66a3 100644 --- a/scenes/настройки/настройки.gd +++ b/scenes/настройки/настройки.gd @@ -64,7 +64,8 @@ const SETTING_TABLE = [ ['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'], ['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], ['Цвет кнопки \"Подавление\"', TableEdit, TableColorPick, 'Цвет кнопки. Введено по требованию ПЗ' ], - ['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'], ] + ['Коэффициент ширины полосы излучения', TableEdit, TableEdit, 'Изменение ширины полосы излучения помехи в зависимости от цели'], + ['Время повторной отправки помехи', TableEdit, TableEdit, 'Время повторной отправки помехи, с'], ] ## TODO: Придумать как избавиться от индексов ## Индексы строк таблицы. diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 89e71eb8..c08c2b77 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -179,7 +179,6 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Строб" -btn_tooltip = null metadata/state = 0 [node name="btn_threats" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")] @@ -189,7 +188,6 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Цель" -btn_tooltip = null metadata/state = 1 [node name="btn_fs_sector" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")] @@ -199,7 +197,6 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Сектор" -btn_tooltip = null pressed = true metadata/state = 2 @@ -354,7 +351,6 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Сек. запрета" -btn_tooltip = null metadata/state = 0 [node name="btn_work" parent="." instance=ExtResource("8_k0iv2")] @@ -368,7 +364,6 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Сек. работы" -btn_tooltip = null metadata/state = 0 [node name="btn_all_work" type="TextureButton" parent="."] diff --git a/scenes/эмс/эмс.tscn b/scenes/эмс/эмс.tscn index 35c82896..32717b0e 100644 --- a/scenes/эмс/эмс.tscn +++ b/scenes/эмс/эмс.tscn @@ -81,7 +81,6 @@ offset_right = 1583.0 offset_bottom = 85.0 strips_rotation = 10.0 text = "Прочитать" -btn_tooltip = "" [node name="btn_flash_write" parent="." instance=ExtResource("2_eju8r")] layout_mode = 0 @@ -91,7 +90,6 @@ offset_right = 1583.0 offset_bottom = 129.0 strips_rotation = 10.0 text = "Записать" -btn_tooltip = "" [node name="btn_save" type="Button" parent="."] layout_mode = 0 diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 6552f18f..fc3dd2a9 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -95,6 +95,7 @@ const INTERFER_IQFILE = 'IQ-файл' const POW_DEFAULT: float = 50.0 const PERIOD_DEFAULT = 7.5 const MIN_WIDTH_COEF = 1.0 +const MIN_RESEND_TIMEOUT = 0.05 var msg6_num: int = 0 ## Счётчик сообщений "тип 6" var msg8_num: int = 0 ## Счётчик сообщений "тип 8" @@ -112,7 +113,10 @@ var gos_protocols: PackedStringArray ## Список протокол var gos_nmfs: Array ## Список номеров блоков ФС для которых запрещена работа var fs_closed: Dictionary ## Словарь секторов запрета var width_coef: float = 1.5 ## Коэффициент расширения полосы +var now: = 0.0 ## Время с момента запуска +var resend_timeout: float = 1.0 ## Время повторной отправки команды +signal send_ecms(time_now) ## Сигнал отправки помех, если настало время ## Режимы работы АФСП и БПО (Протокол ТНИИС-СТЦ, пункт 2.5.10) enum AFSP_BPO_MODE { @@ -130,7 +134,7 @@ class Interfer: var params: = {} ## Параметры помехи. var get_params: Array[String] ## Запрос массива параметров (список запрошенных параметров). var retss: int ## Значение счётчика сообщения в котором был произведён запрос массива параметров. - var tick_tx: int ## Тик время обновления цели, мс. + var tick_tx: float ## Тик время обновления цели, мс. var source_interfer: String = '' ## Тип объекта по которой поставлена помеха. var modulation: bool ## Модуляция для включения усилителей var um: float ## Угол места для помехи. @@ -202,20 +206,15 @@ func _ready() -> void: id_array.append(i + 1) var unit_caps = network.get_unit_instance('уарэп-капсрпб') var unit_5p28 = network.get_unit_instance('уарэп-5п28') - var timer_check_state: = Timer.new() - add_child(timer_check_state) - var resend_timeout = ProjectSettings.get_setting('application/interfer/resend_timeout', 1000.0) var ecms: Dictionary = {} ## Словарь помех. var seczaps: Dictionary = {} ## Словарь секторов запрета - timer_check_state.connect('timeout', Callable(self, 'on_timer_check_state').bind(unit_caps, ecms, resend_timeout)) - timer_check_state.start(resend_timeout / 1000.0) unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms, seczaps)) unit_5p28.connect('get_interfers', Callable(self, 'on_get_interfers').bind(unit_5p28, ecms)) signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit_caps, ecms)) signaller.connect('interfer_rcv', Callable(self, 'on_interfer_rcv').bind(unit_5p28, unit_caps, ecms)) - signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind(unit_caps)) + signaller.connect('interfer_new', Callable(self, 'on_interfer_new')) signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit_caps, ecms)) - signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms, unit_caps)) + signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms)) signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind(ecms, unit_caps)) signaller.connect('manual_control', Callable(self, 'on_manual_control')) signaller.connect('full_auto', Callable(self, 'on_full_auto')) @@ -227,10 +226,11 @@ func _ready() -> void: signaller.connect('update_fs_closed', Callable(self, 'on_update_fs_closed')) threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit_caps)) threats.connect('threats_resized', Callable(self, 'on_threats_resized')) - threats.connect('threat_update', Callable(self, 'on_threats_update').bind(ecms, unit_caps)) + threats.connect('threat_update', Callable(self, 'on_threats_update').bind(ecms)) ProjectSettings.connect('settings_changed', on_settings_changed) var unit_nav: = network.get_unit_instance('навигация') unit_nav.connect('data_received', on_nav_data_received.bind(unit_caps)) + connect('send_ecms', Callable(self, 'on_send_ecms').bind(ecms, unit_caps)) call_deferred('emit_signal', 'interfer_resized', ecms) @@ -263,16 +263,7 @@ func on_nav_data_received(coords: Dictionary, unit_caps): msg8_num %= 0xffffffff -## Проверяет состояние отправки пакета и если не доставлен, повторяет отправку. -func on_timer_check_state(unit_instance, ecms, resend_timeout) -> void: - var tick = Time.get_ticks_msec() - for ecm in ecms.values(): - if (tick - ecm.tick_tx) >= resend_timeout: - send_ecm(ecm, unit_instance) - ecm.tick_tx = tick - - -func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> void: +func on_th_aoa_update(threats: Dictionary, ecms: Dictionary) -> void: gos_nmfs.clear() for thr in threats.values(): var fs_arr: Array = [] @@ -304,12 +295,8 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v ecm.params['freq'] = thr.freq ecm.kni = fposmod(thr.aoa - course, 360) call_ecm_proc(ecm) - if ecm.nmfs in gos_nmfs: + if ecm.nmfs in gos_nmfs or prd.fs_caps_id[ecm.nmfs] in fs_closed: signaller.emit_signal('interfer_off', ecm) - elif prd.fs_caps_id[ecm.nmfs] in fs_closed: - signaller.emit_signal('interfer_off', ecm) - else: - send_ecm(ecm, unit_instance) signaller.emit_signal('fs_update_color', ecms) prd.update_fs_state(ecms, trenazh_mode) @@ -459,7 +446,7 @@ func on_interfer_rcv(interfer_params: Array, unit0, unit_caps, ecms) -> void: unit0.on_interfer_accept(err) -func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interfer, power) -> void: +func interfer_create(_u, interfer_name, ecms, param, kni, id, dict, source_interfer, power) -> void: var sz = ecms.size() var ispp: int = 0 param['dur'] = 1.0 # Необходимо добавить параметры управления @@ -502,13 +489,13 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf if interfer_name == 'off': signaller.emit_signal('interfer_off', ecm) thrs.erase(ispp) - ecm.tick_tx = Time.get_ticks_msec() - send_ecm(ecm, u) if sz != ecms.size(): call_deferred('emit_signal', 'interfer_resized', ecms) func send_ecm(ecm, unit0) -> void: + var time_now = Time.get_ticks_msec() + print_debug(time_now) if ecm.krp != INTERFER_OFF: if not ecm.modulation: call_deferred('emit_signal', 'interfer_update', ecm) @@ -518,6 +505,7 @@ func send_ecm(ecm, unit0) -> void: unit0.tx_stack.append(json_data) + func on_interfer_off_all(_unit0, ecms: Dictionary) -> void: for ecm in ecms.values(): signaller.emit_signal('interfer_off', ecm) @@ -589,7 +577,7 @@ func on_threats_resized(th_dic): thrs_dict = th_dic -func on_threats_update(threat, ecms, unit_caps): +func on_threats_update(threat, ecms): var th_id = threat.id var ecm = null for ecm_i in thrs.keys(): @@ -613,8 +601,6 @@ func on_threats_update(threat, ecms, unit_caps): if ecm.kni < 0: ecm.kni += 360 set_nmfs(ecm) - if ecm != null: - send_ecm(ecm, unit_caps) func find_threat(freq: int, aoa: float): @@ -687,9 +673,8 @@ func on_interfer_off(ecm: Interfer, ecms, unit_caps): interfer.call_deferred('emit_signal', 'interfer_resized', ecms) -func on_interfer_new(ecm, unit_caps): +func on_interfer_new(ecm): call_ecm_proc(ecm) - send_ecm(ecm, unit_caps) func on_settings_changed(): @@ -697,8 +682,9 @@ func on_settings_changed(): var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '') gos_protocols = protocols.split(",", true) width_coef = float(ProjectSettings.get_setting('application/config/Коэффициент ширины полосы излучения', 1.5)) - if width_coef < MIN_WIDTH_COEF: - width_coef = MIN_WIDTH_COEF + if width_coef < MIN_WIDTH_COEF: width_coef = MIN_WIDTH_COEF + resend_timeout = float(ProjectSettings.get_setting('application/config/Время повторной отправки помехи', 1.0)) + if resend_timeout < MIN_RESEND_TIMEOUT: resend_timeout = MIN_RESEND_TIMEOUT func call_ecm_proc(ecm): @@ -727,3 +713,15 @@ func set_th_emit(th: threats.Threat, ecm: Interfer): func check_width(param: Dictionary): if (param['width'] < settings.WIDTH_MIN): param['width'] = settings.WIDTH_MIN elif (param['width'] > settings.WIDTH_MAX): param['width'] = settings.WIDTH_MAX + + +func on_send_ecms(time_now, ecms, unit_caps): + for ecm in ecms.values(): + if (time_now - ecm.tick_tx) >= resend_timeout: + send_ecm(ecm, unit_caps) + ecm.tick_tx = time_now + + +func _process(delta: float) -> void: + now += delta + emit_signal('send_ecms', now) From 2ca8e591e71ee7c549913d3485165a40b53410a1 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 17 Dec 2025 11:28:29 +0300 Subject: [PATCH 07/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=A3=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B1=D0=B5=D0=BB.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/interfer.gd | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/interfer.gd b/scripts/interfer.gd index fc3dd2a9..1ac20e08 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -495,7 +495,6 @@ func interfer_create(_u, interfer_name, ecms, param, kni, id, dict, source_inter func send_ecm(ecm, unit0) -> void: var time_now = Time.get_ticks_msec() - print_debug(time_now) if ecm.krp != INTERFER_OFF: if not ecm.modulation: call_deferred('emit_signal', 'interfer_update', ecm) @@ -505,7 +504,6 @@ func send_ecm(ecm, unit0) -> void: unit0.tx_stack.append(json_data) - func on_interfer_off_all(_unit0, ecms: Dictionary) -> void: for ecm in ecms.values(): signaller.emit_signal('interfer_off', ecm) From bbb119017c15c0f3f44ac56340d9882f088f6405 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 17 Dec 2025 11:31:48 +0300 Subject: [PATCH 08/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=A3=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=20=D0=B8=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=D1=83=D1=89=D0=B5=D0=B3=D0=BE=20=D0=B2=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/interfer.gd | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 1ac20e08..d3f18371 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -494,7 +494,6 @@ func interfer_create(_u, interfer_name, ecms, param, kni, id, dict, source_inter func send_ecm(ecm, unit0) -> void: - var time_now = Time.get_ticks_msec() if ecm.krp != INTERFER_OFF: if not ecm.modulation: call_deferred('emit_signal', 'interfer_update', ecm) From f9e00e3976ff66f452513b1ffcfa003a4a6ff499 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Thu, 18 Dec 2025 10:44:29 +0300 Subject: [PATCH 09/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=B2=D1=8B=D0=BB=D0=B5=D1=82?= =?UTF-8?q?,=20=D0=B5=D1=81=D0=BB=D0=B8=20=D1=86=D0=B5=D0=BB=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D1=85=D0=BE=D0=B4=D0=B8=D1=82=20=D0=B2=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BB=D1=8F=20=D1=81=20=D0=BE=D1=82=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B5=D0=BD=D1=8B=D0=BC=D0=B8=20=D1=81=D0=B8=D0=B3?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=D0=B0=D0=BC=D0=B8=20=D0=B2=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/tilemap/tilemap.gd | 2 +- scenes/контроль/контроль.tscn | 6 +++--- scenes/работа/работа.gd | 14 +++++++++++++- scripts/interfer.gd | 4 ++-- scripts/signaller.gd | 6 +++++- scripts/threats.gd | 7 ++++++- 6 files changed, 30 insertions(+), 9 deletions(-) diff --git a/scenes/tilemap/tilemap.gd b/scenes/tilemap/tilemap.gd index 39b0e0d3..968f0583 100644 --- a/scenes/tilemap/tilemap.gd +++ b/scenes/tilemap/tilemap.gd @@ -745,7 +745,7 @@ func _on_threat_new(th) -> void: func _on_threat_update(th) -> void: - var target = get_parent().get_node(str(th.id)) + var target = get_parent().get_node_or_null(str(th.id)) if not target: return var new_position = lonlat_to_world(th.lon, th.lat) diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index 5f2c8459..6b9abf23 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -190,14 +190,14 @@ func _on_control_prd_pressed() -> void: # Показываем прогресс бар $pribor_uf/control_progress.visible = true $pribor_uf/control_progress.value = 0 - + # Создаем твин для анимации с плавным началом и концом var tween = create_tween() tween.tween_property($pribor_uf/control_progress, \"value\", 100, 2.0)\\ .set_trans(Tween.TRANS_SINE)\\ .set_ease(Tween.EASE_IN_OUT) - - tween.tween_callback(func(): + + tween.tween_callback(func(): $pribor_uf/control_progress.visible = false $pribor_uf.state = uf_control.serviceability_uf ) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 3566bb98..baf8614d 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -105,7 +105,7 @@ var SIGNALS_CONNECTIONS = [ [signaller, 'interfer_prinuditelno', 'on_interfer_prinuditelno'], [signaller, 'interfer_selected', 'on_interfer_selected'], [signaller, 'map_user_panning', 'on_user_panning'], - [signaller, 'on_prog_ecm_off', 'on_interfer_new'], + [signaller, 'prog_ecm_off', 'on_interfer_new'], [signaller, 'rto_threat_sel', 'on_rto_threat_sel'], [signaller, 'rto_threat_unsel', 'on_rto_threat_unsel'], [signaller, 'sector_klaster', 'sector_klaster'], @@ -233,12 +233,23 @@ func connect_all() -> void: else: var ers = error_string(rc) push_error('%s: %s %s %s' % [ers, item[0], item[1], item[2]]) + signaller.emit_signal('connect_work_signal') + for th in thrs_dict.values(): + var bip = Bip.instantiate() + bip.name = '%d' % th.id + map_threat_to_bip(th, bip) + add_child(bip) + var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) func disconnect_all() -> void: for item in signal_conections: item[0].disconnect(item[1], item[2]) signal_conections.clear() + var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) + for bip in bips: + remove_child(bip) + bip.free() func sector_klaster(sector_data): @@ -302,6 +313,7 @@ func map_threat_to_bip(th: threats.Threat, bip: Control) -> bool: ## Обработчик сигнала обновления цели. func on_threat_update(th: threats.Threat): + var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) var bip = get_node('%d' % th.id) bip.update(th.tick_rx) if th.gos: diff --git a/scripts/interfer.gd b/scripts/interfer.gd index d3f18371..426de162 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -353,7 +353,7 @@ func map_msvk_to_ecms(unit_instance: unit.Unit, ecms: Dictionary): for ecm in ecms.values(): if (ecm.ispp not in ispp_arr) and (ecm.krp == INTERFER_OFF): var sz = ecms.size() - signaller.emit_signal('on_prog_ecm_off', ecm) + signaller.emit_signal('prog_ecm_off', ecm) ecms.erase(ecm.ispp) thrs.erase(ecm.ispp) cu.erase(ecm.ispp) @@ -660,7 +660,7 @@ func on_interfer_off(ecm: Interfer, ecms, unit_caps): send_ecm(ecm, unit_caps) if not unit_caps.online: var sz = ecms.size() - signaller.emit_signal('on_prog_ecm_off', ecm) + signaller.emit_signal('prog_ecm_off', ecm) ecms.erase(ecm.ispp) thrs.erase(ecm.ispp) cu.erase(ecm.ispp) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index c2271316..9c58dcd5 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -227,4 +227,8 @@ signal start_contol_device() ## Вызывается при программном отключении помехи.[br] ## [param ecm] - выключаемая помеха ([b]true[/b] -signal on_prog_ecm_off(ecm: interfer.Interfer) +signal prog_ecm_off(ecm: interfer.Interfer) + + +## Вызывается при подключении обработчиков в режиме работа.[br] +signal connect_work_signal() diff --git a/scripts/threats.gd b/scripts/threats.gd index 407ef74b..2bf2f221 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -71,6 +71,7 @@ func _ready() -> void: signaller.connect('rto_threat_unsel_all', Callable(self, 'on_rto_threat_unsel_all').bind(threats)) signaller.connect('threat_selected', Callable(self, 'on_threat_selected').bind(threats)) signaller.connect('interfer_init', Callable(self, 'on_interfer_init').bind(threats)) + signaller.connect('connect_work_signal', Callable(self, 'on_connect_work_signal').bind(threats)) ProjectSettings.connect('settings_changed', on_settings_changed.bind(threats)) @@ -166,7 +167,7 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary): call_deferred('emit_signal', 'threats_resized', threats) -func on_settings_changed(ths): +func on_settings_changed(ths: Dictionary): gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true) var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '') gos_protocols = protocols.split(",", true) @@ -180,3 +181,7 @@ func set_gos(th: Threat): th.gos = false elif (th.proto in gos_protocols) and th.fflags.proto: th.gos = true + + +func on_connect_work_signal(ths: Dictionary): + emit_signal('threats_resized', ths) From 0a11dac42a91fbe82fa58c5512eeef483b548b88 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Thu, 18 Dec 2025 11:33:09 +0300 Subject: [PATCH 10/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F.=20=D0=A3=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BE=D0=B1=D1=8A=D1=8F=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=D0=B8?= =?UTF-8?q?=D0=BC=D1=8B=D1=85=20=D0=B4=D0=BB=D1=8F=20=D0=BE=D1=82=D0=BB?= =?UTF-8?q?=D0=B0=D0=B4=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/работа/работа.gd | 2 -- 1 file changed, 2 deletions(-) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index baf8614d..7f80c6cc 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -239,7 +239,6 @@ func connect_all() -> void: bip.name = '%d' % th.id map_threat_to_bip(th, bip) add_child(bip) - var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) func disconnect_all() -> void: @@ -313,7 +312,6 @@ func map_threat_to_bip(th: threats.Threat, bip: Control) -> bool: ## Обработчик сигнала обновления цели. func on_threat_update(th: threats.Threat): - var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) var bip = get_node('%d' % th.id) bip.update(th.tick_rx) if th.gos: