[PATCH] Доработка. Оптимизация ширины помехи. Период вынесен в константы. Обновление параметров помехи в таблице.

This commit is contained in:
MaD_CaT
2025-11-18 13:53:27 +03:00
committed by sasha80
parent 33e793faec
commit 3b747f211c
2 changed files with 20 additions and 14 deletions

View File

@@ -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, '')

View File

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