From 4e42c5d2b00269564f71459cf179293f96a2e727 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 11 Sep 2025 10:20:14 +0300 Subject: [PATCH 1/8] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9D=D0=B5=D1=82=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D1=91=D0=BC=D0=B0=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= =?UTF-8?q?=20=D0=BE=D1=82=20"=D0=A2=D1=80=D0=B0=D1=81=D1=81=D1=8B"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/settings.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/settings.gd b/scripts/settings.gd index 09246d63..c625d1ff 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -10,7 +10,7 @@ var UnitProfiles: Dictionary[StringName, Array] = { \ 'уарэп-яу07-частный': ['yau07rx', ['10.1.1.2', 50002, false, true], 'IP-адрес для приёма частных сообщений от ЯУ-07'], 'уарэп-яу07-общий': ['yau07rx', ['*', 50000, true, true], 'IP-адрес для приёма широковещательных сообщений от ЯУ-07'], 'уарэп-капсрпб': ['capsrpb', ['127.0.0.1', 42023, 42022, false, true], 'IP-адрес для обмена сообщениями со службой \"МП550\" (СТЦ)'], - 'уарэп-трасса': ['capsrpb', ['127.0.0.1', 50200, 40241, false, true], 'IP-адрес для обмена сообщениями с \"Трассой\"'], + 'уарэп-трасса': ['trassa', ['127.0.0.1', 50200, 40241, false, true], 'IP-адрес для обмена сообщениями с \"Трассой\"'], 'уарэп-эмс': ['yau07tx', ['10.1.1.52', 50052, false, false], 'IP-адрес прибора УФ'], 'уарэп-яу07-2в': ['yau07tx', ['10.1.1.22', 50022, false, false], 'IP-адрес прибора ПРД-В2'], 'уарэп-яу07-2н': ['yau07tx', ['10.1.1.21', 50021, false, false], 'IP-адрес прибора ПРД-Н2'], From 74562f7ab01fc553d5526b2a7e7bdab7c12d0ab4 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Thu, 11 Sep 2025 10:59:46 +0300 Subject: [PATCH 2/8] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9D=D0=B5=D1=82=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D1=91=D0=BC=D0=B0=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= =?UTF-8?q?=20=D0=BE=D1=82=20"=D0=A2=D1=80=D0=B0=D1=81=D1=81=D1=8B"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/settings.gd | 2 +- scripts/trassa.gd | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/settings.gd b/scripts/settings.gd index c625d1ff..2ac22b72 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -10,7 +10,7 @@ var UnitProfiles: Dictionary[StringName, Array] = { \ 'уарэп-яу07-частный': ['yau07rx', ['10.1.1.2', 50002, false, true], 'IP-адрес для приёма частных сообщений от ЯУ-07'], 'уарэп-яу07-общий': ['yau07rx', ['*', 50000, true, true], 'IP-адрес для приёма широковещательных сообщений от ЯУ-07'], 'уарэп-капсрпб': ['capsrpb', ['127.0.0.1', 42023, 42022, false, true], 'IP-адрес для обмена сообщениями со службой \"МП550\" (СТЦ)'], - 'уарэп-трасса': ['trassa', ['127.0.0.1', 50200, 40241, false, true], 'IP-адрес для обмена сообщениями с \"Трассой\"'], + 'уарэп-трасса': ['trassa', ['127.0.0.1', 50200, 50200, false, true], 'IP-адрес для обмена сообщениями с \"Трассой\"'], 'уарэп-эмс': ['yau07tx', ['10.1.1.52', 50052, false, false], 'IP-адрес прибора УФ'], 'уарэп-яу07-2в': ['yau07tx', ['10.1.1.22', 50022, false, false], 'IP-адрес прибора ПРД-В2'], 'уарэп-яу07-2н': ['yau07tx', ['10.1.1.21', 50021, false, false], 'IP-адрес прибора ПРД-Н2'], diff --git a/scripts/trassa.gd b/scripts/trassa.gd index 164afa3e..faee6834 100644 --- a/scripts/trassa.gd +++ b/scripts/trassa.gd @@ -2,6 +2,7 @@ class_name trassa_unit extends Node class Trassa extends unit.Unit: + var source_addr: = [] func process(tick: int): return Error.ERR_BUSY From 9a04666fdcbcd90ca984287e688b0b7914e620d6 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 23 Sep 2025 14:38:35 +0300 Subject: [PATCH 3/8] Godot4 --- scenes/работа/работа.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 64b1bbd5..6d645182 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -305,6 +305,6 @@ text = "Масштаб:" [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"] From 98c8ea8b21c3bfe13e9fc3266be79b02aaf884a4 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 24 Sep 2025 13:20:20 +0300 Subject: [PATCH 4/8] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=92=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD=D0=B4?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=86=D0=B5=D0=BB=D0=B8=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85?= =?UTF-8?q?=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/interfer.gd | 59 ++++++++++++++++++++++++++++++++++++++++++--- scripts/threats.gd | 2 +- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/scripts/interfer.gd b/scripts/interfer.gd index b7d68810..70b69c32 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -20,6 +20,11 @@ const ITERFER_MODE = { 'k1': [INTERFER_IQFILE, K1_PARAMS, 50], 'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51] } +const RECOMMEND_INTERFER = { + 'ПСП + ФМ-2': 'srni1', + 'Линейная ЧМ': 'lchm1' +} + const SRNI1_PARAMS = {'par_names' : ['freq', 'width']} const SRNM2_PARAMS = {'par_names' : ['freq', 'width', 'period']} const SRNGPS_PARAMS = {'par_names' : ['freq', 'filename'], @@ -265,17 +270,23 @@ func on_data_capsrpb_received(unit0: capsrpb.CapsRpb, ecms: Dictionary) -> void: ## Вызыватся, когда пользователь выбрал помеху и выбраны цели. func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> void: + var ecm_name = interfer_name for item in sel_threats: var param: Dictionary = {} var kni: float = item.aoa var id = item.id param['freq'] = item.freq param['width'] = item.width + if item.rkrp != '': + var krp = get_krp(item) + if krp != '': + ecm_name = krp + set_rparams(item, param) if (param['width'] < settings.WIDTH_MIN): param['width'] = settings.WIDTH_MIN elif (param['width'] > settings.WIDTH_MAX): param['width'] = settings.WIDTH_MAX - interfer_create(u, interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power) + interfer_create(u, ecm_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power) for item in fs_arr: var param: Dictionary = {} @@ -287,6 +298,11 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v if th != null: param['freq'] = th.freq param['width'] = th.width + if th.rkrp != '': + var krp = get_krp(th) + if krp != '': + ecm_name = krp + set_rparams(th, param) else: param['freq'] = item[1] param['width'] = item[2] @@ -295,10 +311,10 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v elif (param['width'] > settings.WIDTH_MAX): param['width'] = settings.WIDTH_MAX if th == null: - interfer_create(u, interfer_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power) + interfer_create(u, ecm_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power) else: id = th.id - interfer_create(u, interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power) + interfer_create(u, ecm_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power) func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void: var err: bool = false @@ -470,6 +486,12 @@ func on_threats_update(threat, ecms, unit_caps): if thrs[ecm_i] == th_id: ecm = ecms[ecm_i] ecm.params['freq'] = threat.freq + ecm.params['width'] = threat.width + if threat.rkrp != '': + var krp = get_krp(threat) + if krp != '': + ecm.krp = krp + set_rparams(threat, ecm.params) ecm.kni = threat.aoa set_nmfs(ecm) if threat.tmod != 'fm': @@ -538,3 +560,34 @@ func find_threat(freq: int, aoa: float): if fs_index_arr[0] == fs_index: return th return null + + +func set_rparams(threat: threats.Threat, params: Dictionary): + if threat.rparams.has('freq'): + params['freq'] = threat.rparams['freq'] + else: + params['freq'] = threat.freq + if threat.rparams.has('period'): + params['period'] = threat.rparams['period'] + if threat.rparams.has('width'): + params['width'] = threat.rparams['width'] + else: + params['width'] = threat.width + if threat.rparams.has('filename'): + params['filename'] = threat.rparams['filename'] + + +func get_krp(threat: threats.Threat): + var krp = '' + if RECOMMEND_INTERFER.has(threat.rkrp): + krp = RECOMMEND_INTERFER[threat.rkrp] + return krp + elif threat.rkrp == INTERFER_IQFILE: + if not threat.rparams.has('filename'): return krp + for key in ITERFER_MODE.keys(): + var ecm_params = ITERFER_MODE[key][1] + if not ecm_params.has('files'): continue + if ecm_params['files'] == threat.rparams['filename']: + krp = key + return krp + return krp diff --git a/scripts/threats.gd b/scripts/threats.gd index 93d34b33..11775bcd 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -18,7 +18,7 @@ class Threat: var power: float ## Уровень принимаемого сигнала, дБм. var proto: String ## Тип протокола источника сигнала. var rkrp: String ## Рекомендуемый режим помехи. - var rparams: String ## Рекомендуемые параметры помехи. + var rparams: Dictionary ## Рекомендуемые параметры помехи. var salt: float ## Координаты старта, высота от уровня моря, м. var slat: float ## Координаты старта, широта в градусах. var slon: float ## Координаты старта, долгота в градусах. From 70e5cfd1115de3ae16888af45a8571f3319d9cda Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 24 Sep 2025 14:02:20 +0300 Subject: [PATCH 5/8] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=9F=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=B2=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B4=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=BE=D1=82?= =?UTF-8?q?=20=D1=86=D0=B5=D0=BB=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-list/scroll-ecm-list.gd | 11 +++++++++++ scripts/interfer.gd | 2 ++ 2 files changed, 13 insertions(+) diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index 7acaa671..129162f2 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -84,6 +84,7 @@ func _ready(): signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel')) signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel').bind(table_index)) interfer.connect('interfer_update', Callable(self, 'on_interfer_update').bind(table_index)) + interfer.connect('interfer_recommendate', Callable(self, 'on_interfer_recommendate')) $table.connect('row_pressed', Callable(self, 'on_row_pressed')) call_deferred('init_table') @@ -159,3 +160,13 @@ func map_th_to_row(ecm) -> Array: if INTERFER_STATE.has(ecm.svk): row[COLUMN_STATE] = '%s' % INTERFER_STATE[ecm.svk] return row + + +func on_interfer_recommendate(ecm): + var sel_rows: Array + $table.get_selected_rows(sel_rows) + if not len(sel_rows): return + var row = sel_rows[0] + var sel_ecm = $table.get_node_user_data(0, sel_rows[0]) + if ecm == sel_ecm: + signaller.emit_signal('interfer_selected', ecm) diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 70b69c32..3876e404 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -144,6 +144,7 @@ signal interfer_run(ecm: Interfer) ## Вызывается в м signal interfer_error(ecm: Interfer, msg: String) ## Вызывается при ошибке. signal interfer_update(ecm: Interfer) ## Вызывается при обновлении помехи. signal interfer_resized(ecms: Dictionary) ## Вызывается при изменении количества сеансов помех. +signal interfer_recommendate(ecm: Interfer) ## Вызывается когда назначается рекомендуемая для цели помеха ## Отправляет словарь помех в юнит, для запаковки и отправки в 5П28. @@ -492,6 +493,7 @@ func on_threats_update(threat, ecms, unit_caps): if krp != '': ecm.krp = krp set_rparams(threat, ecm.params) + emit_signal('interfer_recommendate', ecm) ecm.kni = threat.aoa set_nmfs(ecm) if threat.tmod != 'fm': From 50a7f46dc8c7d6ece4a2bae5d56d2e4d3a9c1560 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 24 Sep 2025 14:15:30 +0300 Subject: [PATCH 6/8] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5.=20=D0=9F=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D0=BA=D0=B0=20=D1=84=D0=BB=D0=B0=D0=B3=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B4=D0=BE=D1=81=D1=82=D0=BE=D0=B2=D0=B5=D1=80=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B8=20=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B4=D1=83=D0=B5=D0=BC=D0=BE=D0=B9=20=D0=BF=D0=BE=D0=BC=D0=B5?= =?UTF-8?q?=D1=85=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D1=86=D0=B5=D0=BB=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/interfer.gd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 3876e404..9ac5ce1d 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -278,7 +278,7 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v var id = item.id param['freq'] = item.freq param['width'] = item.width - if item.rkrp != '': + if (item.rkrp != '') and item.fflags.rkrp: var krp = get_krp(item) if krp != '': ecm_name = krp @@ -299,7 +299,7 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v if th != null: param['freq'] = th.freq param['width'] = th.width - if th.rkrp != '': + if (th.rkrp != '') and th.fflags.rkrp: var krp = get_krp(th) if krp != '': ecm_name = krp @@ -488,7 +488,7 @@ func on_threats_update(threat, ecms, unit_caps): ecm = ecms[ecm_i] ecm.params['freq'] = threat.freq ecm.params['width'] = threat.width - if threat.rkrp != '': + if (threat.rkrp != '') and threat.fflags.rkrp: var krp = get_krp(threat) if krp != '': ecm.krp = krp From cc5c74071a48bccc0fa44f7529b9d2ddf2172d28 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Fri, 26 Sep 2025 10:55:24 +0300 Subject: [PATCH 7/8] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=BE=D0=B2=D0=BE=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BC=D0=B5=D1=85=D0=B8=20=D0=95=D0=9F=D0=A0=D0=9B=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/button-flat/button-flat.tscn | 2 ++ scenes/button-flat/nine-patch-button.gd | 5 ++++ scenes/frame-ecm-list/frm-ecm-list.tscn | 5 ++++ scenes/frame-ecm-list/scroll-ecm-list.gd | 3 ++- scenes/grid-buttons-ecm/grid-buttons-ecm.tscn | 27 ++++++++++++++++++- scenes/работа/работа.tscn | 3 +++ scenes/эмс/эмс.tscn | 2 ++ scripts/interfer.gd | 7 +++-- 8 files changed, 50 insertions(+), 4 deletions(-) diff --git a/scenes/button-flat/button-flat.tscn b/scenes/button-flat/button-flat.tscn index 6fe161c8..b5e777f7 100644 --- a/scenes/button-flat/button-flat.tscn +++ b/scenes/button-flat/button-flat.tscn @@ -56,6 +56,7 @@ offset_right = 20.0 offset_bottom = 20.0 theme_override_styles/panel = SubResource("1") script = ExtResource("1_ui6sg") +font_size = null [node name="back" type="Sprite2D" parent="."] material = SubResource("ShaderMaterial_hhdyc") @@ -79,6 +80,7 @@ axis_stretch_vertical = 2 layout_mode = 2 theme_override_colors/font_outline_color = Color(0, 0, 0, 1) theme_override_constants/outline_size = 4 +theme_override_font_sizes/font_size = 15 theme_override_styles/focus = SubResource("4") theme_override_styles/disabled = SubResource("5") theme_override_styles/hover = SubResource("2") diff --git a/scenes/button-flat/nine-patch-button.gd b/scenes/button-flat/nine-patch-button.gd index 7e2e61d0..f18ef37e 100644 --- a/scenes/button-flat/nine-patch-button.gd +++ b/scenes/button-flat/nine-patch-button.gd @@ -59,6 +59,11 @@ var _pressed: = false $button.set_toggle_mode(val) +@export var font_size: int = true: + set(val): + $button.add_theme_font_size_override('theme_override_font_sizes/font_size', val) + + func set_pressed(val: bool): pressed = val diff --git a/scenes/frame-ecm-list/frm-ecm-list.tscn b/scenes/frame-ecm-list/frm-ecm-list.tscn index e0086614..b1c524e6 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 = "СРН" +font_size = null metadata/rfi_name = "srn" [node name="btn_jtids" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] @@ -66,6 +67,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 15.0 text = "СПРС" +font_size = null metadata/rfi_name = "sprs" [node name="btn_kupd" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] @@ -75,6 +77,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД" strips_rotation = 15.0 text = "КУПД" +font_size = null metadata/rfi_name = "kupd" [node name="btn_panika" parent="grd_forced" groups=["группа-принудительно"] instance=ExtResource("4_7ys3c")] @@ -84,6 +87,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для принудительного включения группы секторов в режим КУПД" strips_rotation = 15.0 text = "Паника" +font_size = null metadata/rfi_name = "" [node name="btn_cancel" parent="grd_forced" groups=["прин-секторы-срн"] instance=ExtResource("4_7ys3c")] @@ -92,4 +96,5 @@ size_flags_horizontal = 3 size_flags_vertical = 3 strips_rotation = 15.0 text = "Очистить" +font_size = null metadata/rfi_name = "" diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index 129162f2..cbfb7a8c 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -36,7 +36,8 @@ const INTERFER_NAMES = { 'svi1': 'СВ-И1', 'k1': 'K1', 'svm2': 'СВ-М2', - 'ozp1': 'ОЗП-1'} + 'ozp1': 'ОЗП-1', + 'eprls': 'ЕПРЛС',} ## Индексы колонок diff --git a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn index 3c28e215..ddad15be 100644 --- a/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn +++ b/scenes/grid-buttons-ecm/grid-buttons-ecm.tscn @@ -5,7 +5,7 @@ [node name="grd_btns" type="GridContainer"] offset_right = 1096.0 offset_bottom = 54.0 -columns = 15 +columns = 16 [node name="btn_off" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] layout_mode = 2 @@ -14,6 +14,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "Откл." disabled = true +font_size = 1 metadata/rfi_name = "off" [node name="btn_p12" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -23,6 +24,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "МЧМ-1" disabled = true +font_size = 1 metadata/rfi_name = "mchm1" [node name="btn_p16" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -32,6 +34,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "СРН-И1" disabled = true +font_size = 1 metadata/rfi_name = "srni1" [node name="btn_p15" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -41,6 +44,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "СРН-М2" disabled = true +font_size = 1 metadata/rfi_name = "srnm2" [node name="btn_p18" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -50,6 +54,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "СРН-GPS" disabled = true +font_size = 1 metadata/rfi_name = "srngps" [node name="btn_p14" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -59,6 +64,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-М4" disabled = true +font_size = 1 metadata/rfi_name = "pdm4" [node name="btn_p13" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -68,6 +74,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-М2" disabled = true +font_size = 1 metadata/rfi_name = "pdm2" [node name="btn_p11" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -77,6 +84,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "ЛЧМ-1" disabled = true +font_size = 1 metadata/rfi_name = "lchm1" [node name="btn_p17" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -86,6 +94,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "ЛЧМ-2" disabled = true +font_size = 1 metadata/rfi_name = "lchm2" [node name="btn_p10" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -95,6 +104,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-М4С" disabled = true +font_size = 1 metadata/rfi_name = "pdm4s" [node name="btn_p9" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -104,6 +114,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "ПД-ЧМ" disabled = true +font_size = 1 metadata/rfi_name = "pdchm" [node name="btn_p8" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -113,6 +124,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "СВ-И1" disabled = true +font_size = 1 metadata/rfi_name = "svi1" [node name="btn_p7" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -122,6 +134,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "K1" disabled = true +font_size = 1 metadata/rfi_name = "k1" [node name="btn_p6" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -131,6 +144,7 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "СВ-М2" disabled = true +font_size = 1 metadata/rfi_name = "svm2" [node name="btn_p5" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] @@ -140,4 +154,15 @@ size_flags_vertical = 3 strips_rotation = 30.0 text = "ОЗП-1" disabled = true +font_size = 1 metadata/rfi_name = "ozp1" + +[node name="btn_p19" parent="." groups=["группа-режим-помехи"] instance=ExtResource("1_oy80h")] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +strips_rotation = 30.0 +text = "ЕПРЛС" +disabled = true +font_size = 1 +metadata/rfi_name = "eprls" diff --git a/scenes/работа/работа.tscn b/scenes/работа/работа.tscn index 6d645182..9e1abc88 100644 --- a/scenes/работа/работа.tscn +++ b/scenes/работа/работа.tscn @@ -174,6 +174,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Строб" +font_size = null metadata/state = 0 [node name="btn_threats" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")] @@ -183,6 +184,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Цель" +font_size = null metadata/state = 1 [node name="btn_fs_sector" parent="btns_select" groups=["группа-режим-выбора"] instance=ExtResource("8_k0iv2")] @@ -192,6 +194,7 @@ size_flags_vertical = 3 tooltip_text = "Кнопка для выбора сектора при помощи клика мышкой" strips_rotation = 25.0 text = "Сектор" +font_size = null metadata/state = 2 [node name="chk_auto" type="CheckBox" parent="."] diff --git a/scenes/эмс/эмс.tscn b/scenes/эмс/эмс.tscn index 32717b0e..9198fcfc 100644 --- a/scenes/эмс/эмс.tscn +++ b/scenes/эмс/эмс.tscn @@ -81,6 +81,7 @@ offset_right = 1583.0 offset_bottom = 85.0 strips_rotation = 10.0 text = "Прочитать" +font_size = null [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 = "Записать" +font_size = null [node name="btn_save" type="Button" parent="."] layout_mode = 0 diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 9ac5ce1d..d45c5f67 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -18,7 +18,8 @@ const ITERFER_MODE = { 'svi1': [INTERFER_IQFILE, SVI1_PARAMS, 20], 'svm2': [INTERFER_IQFILE, SVM2_PARAMS, 21], 'k1': [INTERFER_IQFILE, K1_PARAMS, 50], - 'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51] } + 'ozp1': [INTERFER_IQFILE, OZP1_PARAMS, 51], + 'eprls': [INTERFER_IQFILE, EPRLS_PARAMS, 52], } const RECOMMEND_INTERFER = { 'ПСП + ФМ-2': 'srni1', @@ -59,7 +60,9 @@ 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', + 'call_proc' : 'call_all_diap', + 'par_names' : ['freq', 'filename']} # Файл : Ключ (ширина): ['имя файла'] const PDCHM_PARAMS = {'files': { 5 : 'pdchm_5.pcm', From 50e7222b5788fa6c9e0d5ee9f499b7f61d1d758d Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Fri, 26 Sep 2025 14:44:34 +0300 Subject: [PATCH 8/8] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=20=D0=BC=D0=B5=D1=85=D0=B0=D0=BD=D0=B8=D0=B7=D0=BC?= =?UTF-8?q?=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8,=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=B5=D1=91=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=D0=B4=D0=BE=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20=D1=82=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BA=D0=BE=20=D1=81=D0=B0=D0=BC=D1=83=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BC=D0=B5=D1=85=D1=83.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-list/scroll-ecm-list.gd | 10 +--------- scenes/журнал/журнал.gd | 2 +- scenes/работа/работа.gd | 7 ------- scripts/interfer.gd | 19 +++++++++++++++---- scripts/signaller.gd | 2 +- 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/scenes/frame-ecm-list/scroll-ecm-list.gd b/scenes/frame-ecm-list/scroll-ecm-list.gd index cbfb7a8c..eb3beee7 100644 --- a/scenes/frame-ecm-list/scroll-ecm-list.gd +++ b/scenes/frame-ecm-list/scroll-ecm-list.gd @@ -122,21 +122,13 @@ func on_interfer_new(ecm, table_index): signaller.emit_signal('interfer_selected', ecm) -func on_interfer_off(ecm, ecms, thrs, table_index): - var sz = ecms.size() +func on_interfer_off(ecm, table_index): $table.remove_row(table_index[ecm.ispp]) rehash(table_index) - ecms.erase(ecm.ispp) - thrs.erase(ecm.ispp) - interfer.cu.erase(ecm.ispp) - interfer.fs.erase(ecm.ispp) - interfer.push_id(ecm.ispp) var sel_rows: Array $table.get_selected_rows(sel_rows) if not len(sel_rows): signaller.emit_signal('interfer_selected', null) - if sz != ecms.size(): - interfer.call_deferred('emit_signal', 'interfer_resized', ecms) ## Перестраивает индекс таблицы. Вызывать при удалении строки diff --git a/scenes/журнал/журнал.gd b/scenes/журнал/журнал.gd index dc5ab850..401ad0d8 100644 --- a/scenes/журнал/журнал.gd +++ b/scenes/журнал/журнал.gd @@ -5,7 +5,7 @@ func on_line_changed(unit_inst): log.message(Logger.INFO, '\"%s\" изменен func on_command_fail(unit_inst): log.message(Logger.ERROR, '\"%s\" команда не выполнена' % unit_inst.name) func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()]) func on_parse_error(unit_inst, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit_inst.name, msg]) -func on_interfer_off(ecm, _ecms, _thrs,msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()]) +func on_interfer_off(ecm, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()]) func on_set_program_mode(msg: String): log.message(Logger.INFO, msg) func on_interfer_new(ecm, msg: String): diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 242edf4b..9f46f221 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -229,13 +229,6 @@ func on_interfer_off_all(): update_fs_colors() -func on_interfer_off(ecm_id): - fs_active.erase(ecm_id) - fs_selected.erase(ecm_id) - fs_active.clear() - update_fs_colors() - - ## Обработчик сигнала обнаружения цели. func on_threat_new(th) -> void: var bip = Bip.instantiate() diff --git a/scripts/interfer.gd b/scripts/interfer.gd index d45c5f67..37cd4b81 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -180,7 +180,7 @@ func _ready() -> void: signaller.connect('interfer_new', Callable(self, 'send_ecm').bind(unit_caps)) 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('interfer_off', Callable(self, 'on_interfer_off')) + signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind(ecms)) signaller.connect('manual_control', Callable(self, 'on_manual_control')) signaller.connect('full_auto', Callable(self, 'on_full_auto')) signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno')) @@ -391,7 +391,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf log.error('Ошибка выбора модуля ФС для помехи: %s' %[ecm.ispp]) signaller.emit_signal('interfer_new', ecm) if interfer_name == 'off': - signaller.emit_signal('interfer_off', ecm, ecms, thrs) + signaller.emit_signal('interfer_off', ecm) thrs.erase(ispp) ecm.tick_tx = Time.get_ticks_msec() send_ecm(ecm, u) @@ -414,7 +414,7 @@ func on_interfer_off_all(unit0, ecms: Dictionary) -> void: for ecm in ecms.values(): ecm.krp = INTERFER_OFF send_ecm(ecm, unit0) - signaller.emit_signal('interfer_off', ecm, ecms, thrs) + signaller.emit_signal('interfer_off', ecm) func on_threats_lost(th, ecms, unit0) -> void: @@ -424,7 +424,7 @@ func on_threats_lost(th, ecms, unit0) -> void: var ecm = ecms[ecm_id] ecm.krp = INTERFER_OFF send_ecm(ecm, unit0) - signaller.emit_signal('interfer_off', ecm, ecms, thrs) + signaller.emit_signal('interfer_off', ecm) func pop_id() -> int: @@ -596,3 +596,14 @@ func get_krp(threat: threats.Threat): krp = key return krp return krp + + +func on_interfer_off(ecm: Interfer, ecms): + var sz = ecms.size() + ecms.erase(ecm.ispp) + thrs.erase(ecm.ispp) + interfer.cu.erase(ecm.ispp) + interfer.fs.erase(ecm.ispp) + interfer.push_id(ecm.ispp) + if sz != ecms.size(): + interfer.call_deferred('emit_signal', 'interfer_resized', ecms) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index d96201fd..9e2a7c34 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -107,7 +107,7 @@ signal interfer_new(ecm: interfer.Interfer) ## [param ecm] - Новая помеха.[br] ## [param ecms] - словарь помех.[br] ## [param thrs] - словарь id помех и связанных с ними целей.[br] -signal interfer_off(ecm: interfer.Interfer, ecms: Dictionary, thrs: Dictionary) +signal interfer_off(ecm: interfer.Interfer) ## Вызывается при нажатии отключить.