diff --git a/scenes/tilemap/tilemap.gd b/scenes/tilemap/tilemap.gd index 39b0e0d3..968f0583 100644 --- a/scenes/tilemap/tilemap.gd +++ b/scenes/tilemap/tilemap.gd @@ -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) diff --git a/scenes/контроль/контроль.tscn b/scenes/контроль/контроль.tscn index 5f2c8459..6b9abf23 100644 --- a/scenes/контроль/контроль.tscn +++ b/scenes/контроль/контроль.tscn @@ -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 ) diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 3566bb98..baf8614d 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -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: diff --git a/scripts/interfer.gd b/scripts/interfer.gd index d3f18371..426de162 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -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) diff --git a/scripts/signaller.gd b/scripts/signaller.gd index c2271316..9c58dcd5 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -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() diff --git a/scripts/threats.gd b/scripts/threats.gd index 407ef74b..2bf2f221 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -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)