From 3b747f211c7dc58262e649fb804927a3547f6e18 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 18 Nov 2025 13:53:27 +0300 Subject: [PATCH] =?UTF-8?q?[PATCH]=20=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0.=20=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=88=D0=B8=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8.=20=D0=9F=D0=B5?= =?UTF-8?q?=D1=80=D0=B8=D0=BE=D0=B4=20=D0=B2=D1=8B=D0=BD=D0=B5=D1=81=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D1=82=D1=8B.=20=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8=20?= =?UTF-8?q?=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frame-ecm-params/scroll-ecm-params.gd | 8 ++++++ scripts/interfer.gd | 26 +++++++++----------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/scenes/frame-ecm-params/scroll-ecm-params.gd b/scenes/frame-ecm-params/scroll-ecm-params.gd index 37697318..33109258 100644 --- a/scenes/frame-ecm-params/scroll-ecm-params.gd +++ b/scenes/frame-ecm-params/scroll-ecm-params.gd @@ -45,6 +45,7 @@ func init_table(): $table.set_meta('id', 0) signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected').bind(toggle_btn)) signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel')) + interfer.connect('interfer_update', Callable(self, 'on_interfer_update').bind(toggle_btn)) ## Called when the node enters the scene tree for the first time. @@ -84,6 +85,13 @@ func on_interfer_selected(ecm, toggle_btn): on_ecm_update(toggle_btn) +func on_interfer_update(ecm, toggle_btn): + if not $table.has_meta('ecm'): return + var tbl_ecm = $table.get_meta('ecm', null) + if tbl_ecm == ecm: + on_ecm_update(toggle_btn) + + func on_ecm_update(toggle_btn): for item in len(TABLE_PARAMS): $table.set_node_text(1, item, '') diff --git a/scripts/interfer.gd b/scripts/interfer.gd index 4697b57d..405dacbe 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -93,6 +93,7 @@ const ID_INTERFERS_LEN = 63 ## Размер пула номеров целе const INTERFER_OFF = 'off' const INTERFER_IQFILE = 'IQ-файл' const POW_DEFAULT: float = 50.0 +const PERIOD_DEFAULT = 7.5 var msg6_num: int = 0 ## Счётчик сообщений "тип 6" var msg8_num: int = 0 ## Счётчик сообщений "тип 8" var id_array: Array ## Массив id воздействий. @@ -389,10 +390,7 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v if krp != '': interfer_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 + check_width(param) interfer_create(u, interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power) for item in fs_arr: @@ -401,10 +399,7 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v var id = item[3] param['freq'] = item[1] param['width'] = item[2] - if (param['width'] < settings.WIDTH_MIN): - param['width'] = settings.WIDTH_MIN - elif (param['width'] > settings.WIDTH_MAX): - param['width'] = settings.WIDTH_MAX + check_width(param) interfer_create(u, interfer_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power) @@ -444,7 +439,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf var sz = ecms.size() var ispp: int = 0 param['dur'] = 1.0 # Необходимо добавить параметры управления - param['period'] = 1.0 # Необходимо добавить параметры управления + param['period'] = param.get('period', PERIOD_DEFAULT) var key = dict.find_key(id) if source_interfer != SOURCE_INTERFER[2]: if key != null: @@ -580,9 +575,8 @@ func on_threats_update(threat, ecms, unit_caps): ecm.priority = threat.priority ecm.params['freq'] = threat.freq var width = threat.width * 1.5 - if width < settings.WIDTH_MIN: - width = settings.WIDTH_MIN ecm.params['width'] = width + check_width(ecm.params) if (threat.rkrp != '') and threat.fflags.rkrp and auto_enabled: var krp = get_krp(threat) if krp != '': @@ -619,12 +613,11 @@ func set_rparams(threat: threats.Threat, params: Dictionary): 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'] + params['width'] = threat.rparams['width'] * 1.5 else: params['width'] = threat.width * 1.5 + check_width(params) if threat.rparams.has('filename'): params['filename'] = threat.rparams['filename'] @@ -695,3 +688,8 @@ func set_th_emit(th: threats.Threat, ecm: Interfer): return else: th.emit_state = 1 + + +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