Реализация автомата в двух состояниях (0 и 3)

This commit is contained in:
lepshiy
2024-12-11 10:54:23 +03:00
parent e4338d2f0f
commit 77ef3124d5
8 changed files with 41 additions and 10 deletions

View File

@@ -35,6 +35,7 @@ var id_array: Array ## Массив id воздействий.
var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия.
var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия.
var cu: Dictionary ## Словарь воздействий для 5П-28, ключ - id воздействия.
var auto_status: int = 0 # Статус скролла автомата
## Сеанс помехи.
class Interfer:
@@ -114,6 +115,9 @@ func _ready():
signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit, ecms))
signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms, unit))
signaller.connect('interfer_off', Callable(self, 'on_interfer_off'))
signaller.connect('manual_control', Callable(self, 'on_manual_control'))
signaller.connect('full_auto', Callable(self, 'on_full_auto'))
signaller.connect('interfer_prenuditelno', Callable(self, 'on_interfer_prenuditelno'))
threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit))
@@ -126,6 +130,11 @@ func on_timer_check_state(unit, ecms, resend_timeout):
send_ecm(ecm, unit)
ecm.tick_tx = tick
func on_manual_control():
auto_status = 0
func on_full_auto():
auto_status = 3
func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit):
for thr in threats.values():
@@ -138,6 +147,15 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit):
send_ecm(ecm, unit)
signaller.emit_signal('fs_update_color', ecms)
if auto_status == 0:
return
if auto_status == 3:
for thr in threats.values():
thr.auto_selected = true
signaller.emit_signal('interfer_init', 'lchm1', [])
thr.auto_selected = false
## Производит приём состояния помех. [param unit] -> [param ecms].
func on_data_capsrpb_received(unit: capsrpb.CapsRpb, ecms: Dictionary):
@@ -234,7 +252,7 @@ func interfer_create(interfer_name, ecms, param, kni, id, dict, source_interfer)
ecm = Interfer.new()
ecm.ispp = ispp
ecms[ispp] = ecm
ecm.svk = STATE_TSMT # Подготовка к передаче сообщения
ecm.svk = STATE_TSMT # Подготовка к передаче сообщения
ecm.ss = msg_ss
ecm.kni = kni
ecm.krp = interfer_name

View File

@@ -146,3 +146,5 @@ signal map_mode_changed(mode: int)
signal th_aoa_update(threats: Dictionary)
signal fs_update_color(ecms:Dictionary)
signal socket_error(error: String)

View File

@@ -27,6 +27,7 @@ class Threat:
var tmod: String ## Тип модуляции.
var width: float ## Ширина занимаемого диапазона частот, МГц.
var selected: bool ## Флаг, что цель выбрана.
var auto_selected: bool = false #Флаг автомата для целей
func _init(): clear_fflags()
func _to_string() -> String: return 'номер: %d пеленг: %0.1f частота: %0.1f МГц' % [id, aoa, freq]
@@ -59,7 +60,7 @@ func _ready() -> void:
timer_check_lost.connect('timeout', Callable(self, 'on_timer_check_lost').bind(settings.ThreatParams.time_lost, threats))
timer_check_lost.start(settings.ThreatParams.time_lost / 1000.0)
timer_aoa_update.connect('timeout', Callable(self, 'on_timer_aoa_update').bind(threats))
timer_aoa_update.start(0.25)
timer_aoa_update.start(1.00)
signaller.connect('rto_threat_sel', Callable(self, 'on_rto_threat_sel').bind(threats))
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel').bind(threats))
signaller.connect('rto_threat_unsel_all', Callable(self, 'on_rto_threat_unsel_all').bind(threats))
@@ -111,6 +112,8 @@ func on_interfer_init(interfer_name, fs_arr, threats):
for threat in threats.values():
if threat.selected:
sel_threats.append(threat)
if threat.auto_selected:
sel_threats.append(threat)
if len(sel_threats) or (len(fs_arr)):
signaller.emit_signal('interfer_create', interfer_name, sel_threats, fs_arr)