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

This commit is contained in:
MaD_CaT
2025-10-22 15:34:48 +03:00
parent 10389cf818
commit 7ab8d73f03
4 changed files with 52 additions and 30 deletions

View File

@@ -158,7 +158,7 @@ func _ready():
signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all'))
signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno').bind(nodes))
signaller.connect('fs_selected', Callable(self, 'on_fs_selected'))
signaller.connect('fs_update_color', Callable(self, 'on_fs_update_color'))
signaller.connect('fs_update_color', Callable(self, 'set_fs_color'))
interfer.connect('interfer_update', Callable(self, 'on_interfer_new'))
signaller.connect('interfer_prinuditelno', Callable(self, 'on_chk_interfer_prinuditelno'))
signaller.connect('fs_update_state', Callable(self, 'on_fs_update_state'))
@@ -254,9 +254,7 @@ func on_interfer_new(ecm):
bip.set_track_visible(false)
else:
interfer.thrs.erase(ecm.ispp)
set_fs_color(ecm)
update_fs_colors()
set_fs_color(ecm)
## Обработчик выключения всех помех.
@@ -469,18 +467,17 @@ func sel_fs_sector(event):
set_ecm_btns_state(btn_state)
func set_fs_color(ecm):
if not prd.fs_caps_id.has(ecm.nmfs):
push_warning('нет такого модуля ФС: %d, но имеется: %s' % [ecm.nmfs, prd.fs_caps_id.keys()])
return
if ecm.krp != interfer.INTERFER_OFF:
fs_active[prd.fs_caps_id[ecm.nmfs]] = null
else:
fs_active.erase(prd.fs_caps_id[ecm.nmfs])
if ecm.svk == SVK_EMIT:
fs_emit[prd.fs_caps_id[ecm.nmfs]] = null
else:
fs_emit.erase(prd.fs_caps_id[ecm.nmfs])
func set_fs_color(ecms):
fs_active.clear()
fs_emit.clear()
for ecm in ecms.values():
if not prd.fs_caps_id.has(ecm.nmfs):
push_warning('нет такого модуля ФС: %d, но имеется: %s' % [ecm.nmfs, prd.fs_caps_id.keys()])
continue
if ecm.krp != interfer.INTERFER_OFF:
fs_active[prd.fs_caps_id[ecm.nmfs]] = null
if ecm.svk == SVK_EMIT:
fs_emit[prd.fs_caps_id[ecm.nmfs]] = null
update_fs_colors()
@@ -530,14 +527,6 @@ func set_btns_disabled(value: bool, btn):
btn.set_disabled(value)
func on_fs_update_color(ecms):
fs_active.clear()
fs_emit.clear()
for ecm in ecms.values():
set_fs_color(ecm)
update_fs_colors()
func on_interfer_prinuditelno (prenuditelno_sectors, btns):
for key in prenuditelno_sectors:
var sectors = []

View File

@@ -342,11 +342,11 @@ text = ""
[connection signal="drag_continue" from="." to="." method="_on_drag_continue"]
[connection signal="toggled" from="btn_view" to="." method="on_button_view_toggled"]
[connection signal="toggled" from="chk_auto" to="." method="on_value_changed"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate"]
[connection signal="toggled" from="btn_activate" to="." method="on_btn_activate_toggled"]
[connection signal="toggled" from="btn_center" to="." method="on_btn_center_toggled"]
[connection signal="button_down" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_down"]
[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"]
[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_plus_button_up"]
[connection signal="button_up" from="zoom_plus" to="tilemap" method="_on_zoom_button_up"]
[connection signal="button_down" from="zoom_minus" to="tilemap" method="_on_zoom_minus_button_down"]
[connection signal="button_up" from="zoom_minus" to="tilemap" method="_on_zoom_button_up"]

View File

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

View File

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