Доработка. Добавлены сектора запреты и ответственной работы.

This commit is contained in:
MaD_CaT
2025-10-24 08:33:32 +03:00
parent d382409c34
commit 4a37c1a673
6 changed files with 122 additions and 31 deletions

View File

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

View File

@@ -1,4 +1,4 @@
@tool
#@tool
class_name Network extends Node
const YAU07_PROTO: = {'yau07tx': yau07.YaU07}

View File

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