Доработка. Обновление цели в таблице
This commit is contained in:
@@ -23,11 +23,13 @@ class Threat:
|
||||
var slat: float ## Координаты старта, широта в градусах.
|
||||
var slon: float ## Координаты старта, долгота в градусах.
|
||||
var tick: int ## Тик время приёма сигнала, мс.
|
||||
var tick_rx: int ## Тик время обновления цели, мс.
|
||||
var tmod: String ## Тип модуляции.
|
||||
var width: float ## Ширина занимаемого диапазона частот, МГц.
|
||||
|
||||
func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false)
|
||||
func _to_string() -> String: return 'номер:%d пеленг:%0.1f частота:%0.1f МГц' % [id, aoa, freq]
|
||||
func _init(): clear_fflags()
|
||||
func _to_string() -> String: return '<Threat>: номер:%d пеленг:%0.1f частота:%0.1f МГц' % [id, aoa, freq]
|
||||
func clear_fflags(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false)
|
||||
|
||||
func set_from_dic(dic_vals: Dictionary):
|
||||
var items: = fflags.keys().filter(func(vn): return dic_vals.has(vn))
|
||||
@@ -57,7 +59,7 @@ func _ready() -> void:
|
||||
func on_timer_check_lost(time_lost: int):
|
||||
var tick = Time.get_ticks_msec()
|
||||
for th in threats.values():
|
||||
if (tick - th.tick) >= time_lost:
|
||||
if (tick - th.tick_rx) >= time_lost:
|
||||
threats.erase(th.id)
|
||||
emit_signal('threat_lost', threats, th)
|
||||
|
||||
@@ -72,13 +74,13 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb):
|
||||
var id = int(dic_th['id'])
|
||||
if threats.has(id):
|
||||
var th = threats[id]
|
||||
th.clear_fflags()
|
||||
th.set_from_dic(dic_th)
|
||||
th.tick = unit.tick
|
||||
call_deferred('emit_signal', 'threat_update', threats, th)
|
||||
th.tick_rx = unit.tick
|
||||
call_deferred('emit_signal', 'threat_update', threats, th)
|
||||
else:
|
||||
var th = Threat.new()
|
||||
th.set_from_dic(dic_th)
|
||||
th.tick = unit.tick
|
||||
th.fflags['tick'] = true
|
||||
threats[id] = th
|
||||
th.tick_rx = unit.tick
|
||||
call_deferred('emit_signal', 'threat_new', threats, th)
|
||||
|
||||
Reference in New Issue
Block a user