Доработка. Гос. опознавание протоколов. Исправление выбора цвета сектора.
This commit is contained in:
@@ -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 = []
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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