Доработка. Гос. опознавание протоколов. Исправление выбора цвета сектора.
This commit is contained in:
@@ -106,6 +106,7 @@ var trenazh_mode: bool = false ## Переключение ре
|
||||
var course = 0.0 ## Курс корабля
|
||||
var gos_flag = true ## Флаг работать по своим целям
|
||||
var gos_protocols: PackedStringArray ## Список протоколов своих целей
|
||||
var gos_nmfs: Array ## Список номеров блоков ФС для которых запрещена работа
|
||||
|
||||
## Сеанс помехи.
|
||||
class Interfer:
|
||||
@@ -251,7 +252,16 @@ func on_timer_check_state(unit_instance, ecms, resend_timeout) -> void:
|
||||
|
||||
|
||||
func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> void:
|
||||
gos_nmfs.clear()
|
||||
for thr in threats.values():
|
||||
if not gos_flag: # Составляется список запретных секторов работы
|
||||
if (thr.proto in gos_protocols) and thr.fflags.proto:
|
||||
var fs_arr: Array = []
|
||||
prd.find_fs_index(thr.aoa, thr.freq, fs_arr)
|
||||
if fs_arr.size():
|
||||
for item in fs_arr:
|
||||
var nmfs = prd.FS_PRD[item][1]
|
||||
gos_nmfs.append(nmfs)
|
||||
var th_id = thr.id
|
||||
for ecm_i in thrs.keys():
|
||||
if thrs[ecm_i] == th_id:
|
||||
@@ -261,15 +271,36 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v
|
||||
if ecm.kni < 0:
|
||||
ecm.kni += 360
|
||||
call_ecm_proc(ecm)
|
||||
send_ecm(ecm, unit_instance)
|
||||
if ecm.nmfs in gos_nmfs:
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit_instance)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
else:
|
||||
send_ecm(ecm, unit_instance)
|
||||
signaller.emit_signal('fs_update_color', ecms)
|
||||
prd.update_fs_state(ecms, trenazh_mode)
|
||||
|
||||
if not gos_flag:
|
||||
for ecm in ecms.values():
|
||||
if not (ecm.nmfs in gos_nmfs): continue
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit_instance)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
|
||||
if not auto_enabled:
|
||||
return
|
||||
|
||||
if auto_enabled:
|
||||
for thr in threats.values():
|
||||
if not gos_flag:
|
||||
var fs_arr: Array = []
|
||||
prd.find_fs_index(thr.aoa, thr.freq, fs_arr)
|
||||
if fs_arr.size():
|
||||
var need_continue = false
|
||||
for item in fs_arr:
|
||||
var nmfs = prd.FS_PRD[item][1]
|
||||
if nmfs in gos_nmfs: need_continue = true
|
||||
if need_continue: continue
|
||||
thr.auto_selected = true
|
||||
if (thr.rkrp != '') and thr.fflags.rkrp and auto_enabled:
|
||||
var krp = get_krp(thr)
|
||||
|
||||
@@ -111,10 +111,12 @@ func on_threat_selected(th, threats):
|
||||
func on_interfer_init(interfer_name, fs_arr, power, threats):
|
||||
var sel_threats: Array = []
|
||||
for threat in threats.values():
|
||||
if threat.selected:
|
||||
sel_threats.append(threat)
|
||||
if threat.auto_selected:
|
||||
sel_threats.append(threat)
|
||||
if interfer.auto_enabled:
|
||||
if threat.auto_selected:
|
||||
sel_threats.append(threat)
|
||||
else:
|
||||
if threat.selected:
|
||||
sel_threats.append(threat)
|
||||
if len(sel_threats) or len(fs_arr):
|
||||
signaller.emit_signal('interfer_create', interfer_name, sel_threats, fs_arr, power)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user