Исправления. Исправлен вылет, если цель приходит в режиме контроля с отключеными сигналами в работе.

This commit is contained in:
MaD_CaT
2025-12-18 10:44:29 +03:00
parent bbb119017c
commit f9e00e3976
6 changed files with 30 additions and 9 deletions

View File

@@ -745,7 +745,7 @@ func _on_threat_new(th) -> void:
func _on_threat_update(th) -> void:
var target = get_parent().get_node(str(th.id))
var target = get_parent().get_node_or_null(str(th.id))
if not target:
return
var new_position = lonlat_to_world(th.lon, th.lat)

View File

@@ -190,14 +190,14 @@ func _on_control_prd_pressed() -> void:
# Показываем прогресс бар
$pribor_uf/control_progress.visible = true
$pribor_uf/control_progress.value = 0
# Создаем твин для анимации с плавным началом и концом
var tween = create_tween()
tween.tween_property($pribor_uf/control_progress, \"value\", 100, 2.0)\\
.set_trans(Tween.TRANS_SINE)\\
.set_ease(Tween.EASE_IN_OUT)
tween.tween_callback(func():
tween.tween_callback(func():
$pribor_uf/control_progress.visible = false
$pribor_uf.state = uf_control.serviceability_uf
)

View File

@@ -105,7 +105,7 @@ var SIGNALS_CONNECTIONS = [
[signaller, 'interfer_prinuditelno', 'on_interfer_prinuditelno'],
[signaller, 'interfer_selected', 'on_interfer_selected'],
[signaller, 'map_user_panning', 'on_user_panning'],
[signaller, 'on_prog_ecm_off', 'on_interfer_new'],
[signaller, 'prog_ecm_off', 'on_interfer_new'],
[signaller, 'rto_threat_sel', 'on_rto_threat_sel'],
[signaller, 'rto_threat_unsel', 'on_rto_threat_unsel'],
[signaller, 'sector_klaster', 'sector_klaster'],
@@ -233,12 +233,23 @@ func connect_all() -> void:
else:
var ers = error_string(rc)
push_error('%s: %s %s %s' % [ers, item[0], item[1], item[2]])
signaller.emit_signal('connect_work_signal')
for th in thrs_dict.values():
var bip = Bip.instantiate()
bip.name = '%d' % th.id
map_threat_to_bip(th, bip)
add_child(bip)
var bips: Array = get_children().filter(func(item): return item.name.is_valid_int())
func disconnect_all() -> void:
for item in signal_conections:
item[0].disconnect(item[1], item[2])
signal_conections.clear()
var bips: Array = get_children().filter(func(item): return item.name.is_valid_int())
for bip in bips:
remove_child(bip)
bip.free()
func sector_klaster(sector_data):
@@ -302,6 +313,7 @@ func map_threat_to_bip(th: threats.Threat, bip: Control) -> bool:
## Обработчик сигнала обновления цели.
func on_threat_update(th: threats.Threat):
var bips: Array = get_children().filter(func(item): return item.name.is_valid_int())
var bip = get_node('%d' % th.id)
bip.update(th.tick_rx)
if th.gos:

View File

@@ -353,7 +353,7 @@ func map_msvk_to_ecms(unit_instance: unit.Unit, ecms: Dictionary):
for ecm in ecms.values():
if (ecm.ispp not in ispp_arr) and (ecm.krp == INTERFER_OFF):
var sz = ecms.size()
signaller.emit_signal('on_prog_ecm_off', ecm)
signaller.emit_signal('prog_ecm_off', ecm)
ecms.erase(ecm.ispp)
thrs.erase(ecm.ispp)
cu.erase(ecm.ispp)
@@ -660,7 +660,7 @@ func on_interfer_off(ecm: Interfer, ecms, unit_caps):
send_ecm(ecm, unit_caps)
if not unit_caps.online:
var sz = ecms.size()
signaller.emit_signal('on_prog_ecm_off', ecm)
signaller.emit_signal('prog_ecm_off', ecm)
ecms.erase(ecm.ispp)
thrs.erase(ecm.ispp)
cu.erase(ecm.ispp)

View File

@@ -227,4 +227,8 @@ signal start_contol_device()
## Вызывается при программном отключении помехи.[br]
## [param ecm] - выключаемая помеха ([b]true[/b]
signal on_prog_ecm_off(ecm: interfer.Interfer)
signal prog_ecm_off(ecm: interfer.Interfer)
## Вызывается при подключении обработчиков в режиме работа.[br]
signal connect_work_signal()

View File

@@ -71,6 +71,7 @@ func _ready() -> void:
signaller.connect('rto_threat_unsel_all', Callable(self, 'on_rto_threat_unsel_all').bind(threats))
signaller.connect('threat_selected', Callable(self, 'on_threat_selected').bind(threats))
signaller.connect('interfer_init', Callable(self, 'on_interfer_init').bind(threats))
signaller.connect('connect_work_signal', Callable(self, 'on_connect_work_signal').bind(threats))
ProjectSettings.connect('settings_changed', on_settings_changed.bind(threats))
@@ -166,7 +167,7 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary):
call_deferred('emit_signal', 'threats_resized', threats)
func on_settings_changed(ths):
func on_settings_changed(ths: Dictionary):
gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true)
var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '')
gos_protocols = protocols.split(",", true)
@@ -180,3 +181,7 @@ func set_gos(th: Threat):
th.gos = false
elif (th.proto in gos_protocols) and th.fflags.proto:
th.gos = true
func on_connect_work_signal(ths: Dictionary):
emit_signal('threats_resized', ths)