From c9304134ca4f60543d77538de4a9a519a5a46a7d Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Wed, 10 Dec 2025 13:15:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=86=D0=B2=D0=B5=D1=82=D0=B0=20=D1=81=D0=B2=D0=BE?= =?UTF-8?q?=D0=B5=D0=B9=20=D1=86=D0=B5=D0=BB=D0=B8=20=D0=BD=D0=B0=20=D0=B7?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=BD=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.godot | 2 -- scenes/работа/работа.gd | 5 ++++- scripts/threats.gd | 24 ++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/project.godot b/project.godot index 922bfd47..4e4c6857 100644 --- a/project.godot +++ b/project.godot @@ -206,8 +206,6 @@ common/enable_object_picking=false [rendering] -renderer/rendering_method="gl_compatibility" -renderer/rendering_method.mobile="gl_compatibility" shader_compiler/shader_cache/strip_debug=true quality/driver/fallback_to_gles2=true diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index ac977358..85153223 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -305,7 +305,10 @@ func map_threat_to_bip(th: threats.Threat, bip: Control) -> bool: func on_threat_update(th: threats.Threat): var bip = get_node('%d' % th.id) bip.update(th.tick_rx) - bip.set_bip_color(Color.CORAL if th.proto else Color.WHITE) + if th.gos: + bip.set_bip_color(Color.GREEN) + else: + bip.set_bip_color(Color.CORAL if th.proto else Color.WHITE) bip.visible = map_threat_to_bip(th, bip) diff --git a/scripts/threats.gd b/scripts/threats.gd index 7ad59b32..f7744505 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -2,6 +2,8 @@ extends Node ## Работа с целями. +var gos_flag = true ## Флаг работать по своим целям +var gos_protocols: PackedStringArray ## Список протоколов своих целей ## Цель class Threat: @@ -31,6 +33,7 @@ class Threat: var emit_state: int = 0 ## 0 - подавление не назначено, 1 - назначено, 2 - выполняется var nmfs: int ## Индекс модуля ФС, в зону действия которого попала цель var priority: int ## Приоритет опасности цели + var gos: bool = false ## Своя или чужая цель func _init(): clear_fflags() func _to_string() -> String: return 'номер: %d пеленг: %0.1f частота: %0.1f МГц' % [id, aoa, freq] @@ -69,6 +72,8 @@ 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)) + + ProjectSettings.connect('settings_changed', on_settings_changed.bind(threats)) ## Периодически удаляет устаревшие цели. @@ -148,12 +153,31 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, threats: Dictionary): th.priority = 1 else: th.priority = 0 + set_gos(th) call_deferred('emit_signal', 'threat_update', th) + else: var th: = Threat.new() th.set_from_dic(dic_th) threats[id] = th th.tick_rx = unit.tick + set_gos(th) call_deferred('emit_signal', 'threat_new', th) if sz != threats.size(): call_deferred('emit_signal', 'threats_resized', threats) + + +func on_settings_changed(ths): + gos_flag = ProjectSettings.get_setting('application/config/Включить работу по своим целям', true) + var protocols: String = ProjectSettings.get_setting('application/config/Список своих протоколов', '') + gos_protocols = protocols.split(",", true) + for th in ths.values(): + set_gos(th) + + + +func set_gos(th: Threat): + if gos_flag: + th.gos = false + elif (th.proto in gos_protocols) and th.fflags.proto: + th.gos = true