Исправление. Ошибка в автомате при обновлении информации о помехе.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user