From 10389cf81875f6cd618b2a69e09265814ec779a6 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 21 Oct 2025 16:32:42 +0300 Subject: [PATCH] =?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=9E=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=B8=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BE=20=D0=BF=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D1=85=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/настройки/настройки.tscn | 11 ++++++- scripts/interfer.gd | 52 +++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/scenes/настройки/настройки.tscn b/scenes/настройки/настройки.tscn index e7573903..6aa194ea 100644 --- a/scenes/настройки/настройки.tscn +++ b/scenes/настройки/настройки.tscn @@ -64,7 +64,9 @@ const SETTING_TABLE = [ ['Адрес БПО правого борта', TableEdit, TableEdit, 'http-адрес для запроса состояния прибора БПО'], ['Период опроса состояния БПО, секунды', TableEdit, TableEdit, 'Время в секундах' ], ['Период опроса состояния АФСП, секунды', TableEdit, TableEdit, 'Время в секундах' ], - ['уареп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'] ] + ['уареп-трасса', TableEdit, TableEdit, 'IP-адрес для связи с Трассой [<адрес этого узла>, <адрес удалённого узла>, <порт этого узла>, <порт удалённого узла>]'], + ['Включить работу по своим целям', TableEdit, TableToggle, 'Разрешает работу в секторе со своей целью'], + ['Список своих протоколов', TableEdit, TableEdit, 'Список протоколов целей, по которым запрещено работать' ], ] const EXTERNAL_CU = 16 ## Внешнее целеуказание const TRASSA = 17 @@ -72,6 +74,7 @@ const SUPPRESS = 18 ## Строка - Подавление const KEYBOARD = 19 ## Строка - Виртуальная клавиатура const HIDE_EMS2 = 20 ## Строка - Скрыть вкладку ЭМС 2 const COMMIT = 21 ## Строка - Версия УАРЭП +const GOS_BTN = 51 ## Разрешить работу по своим целям var name_to_line_index: = {} ## Для преобразования названия параметра в номер строки @@ -102,6 +105,10 @@ func on_vk_pressed(btn) -> void: signaller.emit_signal('kb_pressed', btn.button_pressed) +func on_gos_pressed(btn) -> void: + ProjectSettings.set_setting('application/config/Включить работу по своим целям', btn.button_pressed) + + func on_ems2_pressed(btn) -> void: var state = btn.button_pressed signaller.emit_signal('ems2_hide_pressed', state) @@ -222,6 +229,8 @@ func button_settings(): ems2_hide_node.connect('pressed', on_ems2_pressed.bind(ems2_hide_node)) ems2_hide_node.set_pressed(true) on_ems2_pressed(ems2_hide_node) + var gos_node = $scroll_set/table.get_node2(1, GOS_BTN).get_children()[0] + gos_node.connect('pressed', on_gos_pressed.bind(gos_node)) func _on_btn_save_settings_pressed(): diff --git a/scripts/interfer.gd b/scripts/interfer.gd index ee76a19c..2ecfd554 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -93,17 +93,19 @@ const ID_INTERFERS_LEN = 63 ## Размер пула номеров целе const INTERFER_OFF = 'off' const INTERFER_IQFILE = 'IQ-файл' const POW_DEFAULT: float = 50.0 -var msg6_num: int = 0 ## Счётчик сообщений "тип 6" -var msg8_num: int = 0 ## Счётчик сообщений "тип 8" -var id_array: Array ## Массив id воздействий. -var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия. -var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия. -var cu: Dictionary ## Словарь воздействий для 5П-28, ключ - id воздействия. -var thrs_dict: Dictionary ## Ссылка на словарь целей -var auto_enabled: bool = false ## Режим автомата -var emit_enable: bool = true ## Разрешить излучение -var trenazh_mode: bool = false ## Переключение режима Тренаж -var course = 0.0 ## Курс корабля +var msg6_num: int = 0 ## Счётчик сообщений "тип 6" +var msg8_num: int = 0 ## Счётчик сообщений "тип 8" +var id_array: Array ## Массив id воздействий. +var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия. +var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия. +var cu: Dictionary ## Словарь воздействий для 5П-28, ключ - id воздействия. +var thrs_dict: Dictionary ## Ссылка на словарь целей +var auto_enabled: bool = false ## Режим автомата +var emit_enable: bool = true ## Разрешить излучение +var trenazh_mode: bool = false ## Переключение режима Тренаж +var course = 0.0 ## Курс корабля +var gos_flag = true ## Флаг работать по своим целям +var gos_protocols: PackedStringArray ## Список протоколов своих целей ## Сеанс помехи. class Interfer: @@ -207,6 +209,7 @@ func _ready() -> void: 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)) + 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)) @@ -257,6 +260,7 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v ecm.kni = thr.aoa - course if ecm.kni < 0: ecm.kni += 360 + call_ecm_proc(ecm) send_ecm(ecm, unit_instance) signaller.emit_signal('fs_update_color', ecms) prd.update_fs_state(ecms, trenazh_mode) @@ -267,6 +271,12 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v if auto_enabled: for thr in threats.values(): thr.auto_selected = true + if (thr.rkrp != '') and thr.fflags.rkrp and auto_enabled: + var krp = get_krp(thr) + if krp != '': + signaller.emit_signal('interfer_init', krp, [], interfer.POW_DEFAULT) + thr.auto_selected = false + continue signaller.emit_signal('interfer_init', 'lchm1', [], interfer.POW_DEFAULT) thr.auto_selected = false @@ -414,10 +424,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf ecm.source_interfer = source_interfer ecm.modulation = emit_enable ecm.um = param.get('um', 15.0) # Значение по умолчанию - var ecm_params = ITERFER_MODE[interfer_name][1] - if ecm_params.has('call_proc'): - var call_set_params = Callable(self, ecm_params['call_proc']).bind(ecm, ecm_params) - call_set_params.call() + call_ecm_proc(ecm) var set_nmfs_ok = set_nmfs(ecm) if set_nmfs_ok != Error.OK: log.error('Ошибка выбора модуля ФС для помехи: %s' %[ecm.ispp]) @@ -528,7 +535,10 @@ func on_threats_update(threat, ecms, unit_caps): if krp != '': ecm.krp = krp set_rparams(threat, ecm.params) + call_ecm_proc(ecm) emit_signal('interfer_recommendate', ecm) + else: + call_ecm_proc(ecm) ecm.kni = threat.aoa - course if ecm.kni < 0: ecm.kni += 360 @@ -644,8 +654,18 @@ func on_interfer_off(ecm: Interfer, ecms): func on_interfer_new(ecm, unit_caps): + call_ecm_proc(ecm) + send_ecm(ecm, unit_caps) + + +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) + + +func call_ecm_proc(ecm): var ecm_params = ITERFER_MODE[ecm.krp][1] if ecm_params.has('call_proc'): var call_set_params = Callable(self, ecm_params['call_proc']).bind(ecm, ecm_params) call_set_params.call() - send_ecm(ecm, unit_caps)