Доработка. Добавлены сектора запреты и ответственной работы.
This commit is contained in:
@@ -107,6 +107,8 @@ var course = 0.0 ## Курс корабля
|
||||
var gos_flag = true ## Флаг работать по своим целям
|
||||
var gos_protocols: PackedStringArray ## Список протоколов своих целей
|
||||
var gos_nmfs: Array ## Список номеров блоков ФС для которых запрещена работа
|
||||
var fs_closed: Dictionary ## Словарь секторов запрета
|
||||
|
||||
|
||||
## Сеанс помехи.
|
||||
class Interfer:
|
||||
@@ -207,6 +209,7 @@ func _ready() -> void:
|
||||
signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno'))
|
||||
signaller.connect('emit_changed', Callable(self, 'on_emit_changed').bind(ecms))
|
||||
signaller.connect('режим_тренаж', on_trenazh_mode)
|
||||
signaller.connect('update_fs_closed', Callable(self, 'on_update_fs_closed'))
|
||||
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))
|
||||
@@ -272,35 +275,38 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v
|
||||
ecm.kni += 360
|
||||
call_ecm_proc(ecm)
|
||||
if ecm.nmfs in gos_nmfs:
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit_instance)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
interfer_off(ecm, unit_instance)
|
||||
elif prd.fs_caps_id[ecm.nmfs] in fs_closed:
|
||||
interfer_off(ecm, unit_instance)
|
||||
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)
|
||||
|
||||
for ecm in ecms.values():
|
||||
var ecm_active = true
|
||||
if not gos_flag:
|
||||
if ecm.nmfs in gos_nmfs:
|
||||
interfer_off(ecm, unit_instance)
|
||||
ecm_active = false
|
||||
if ecm_active and (prd.fs_caps_id[ecm.nmfs] in fs_closed):
|
||||
interfer_off(ecm, unit_instance)
|
||||
|
||||
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
|
||||
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) and (not gos_flag): need_continue = true
|
||||
if prd.fs_caps_id[nmfs] in fs_closed: 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)
|
||||
@@ -482,9 +488,7 @@ func send_ecm(ecm, unit0) -> void:
|
||||
|
||||
func on_interfer_off_all(unit0, ecms: Dictionary) -> void:
|
||||
for ecm in ecms.values():
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit0)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
interfer_off(ecm, unit0)
|
||||
|
||||
|
||||
func on_threats_lost(th, ecms, unit0) -> void:
|
||||
@@ -492,9 +496,7 @@ func on_threats_lost(th, ecms, unit0) -> void:
|
||||
if interfer.thrs[key] == th.id:
|
||||
var ecm_id = key
|
||||
var ecm = ecms[ecm_id]
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit0)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
interfer_off(ecm, unit0)
|
||||
|
||||
|
||||
func pop_id() -> int:
|
||||
@@ -684,6 +686,12 @@ func on_interfer_off(ecm: Interfer, ecms):
|
||||
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)
|
||||
|
||||
|
||||
func interfer_off(ecm, unit_caps):
|
||||
ecm.krp = INTERFER_OFF
|
||||
send_ecm(ecm, unit_caps)
|
||||
signaller.emit_signal('interfer_off', ecm)
|
||||
|
||||
|
||||
func on_interfer_new(ecm, unit_caps):
|
||||
call_ecm_proc(ecm)
|
||||
send_ecm(ecm, unit_caps)
|
||||
@@ -700,3 +708,7 @@ func call_ecm_proc(ecm):
|
||||
if ecm_params.has('call_proc'):
|
||||
var call_set_params = Callable(self, ecm_params['call_proc']).bind(ecm, ecm_params)
|
||||
call_set_params.call()
|
||||
|
||||
|
||||
func on_update_fs_closed(fs_dict):
|
||||
fs_closed = fs_dict
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@tool
|
||||
#@tool
|
||||
class_name Network extends Node
|
||||
|
||||
const YAU07_PROTO: = {'yau07tx': yau07.YaU07}
|
||||
|
||||
@@ -201,3 +201,8 @@ signal update_uf_serviceability(uf_serviceaability: bool)
|
||||
|
||||
|
||||
signal tool_tip(new_ctrl_pos)
|
||||
|
||||
|
||||
## Вызывается при изменении секторов запрета.[br]
|
||||
## [param fs_closed] - обновленное секторов запрета ([b]true[/b]
|
||||
signal update_fs_closed(fs_closed: Dictionary)
|
||||
|
||||
Reference in New Issue
Block a user