From 5740964d098061c1603ca85270b03961f588ed7c Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Mon, 4 Dec 2023 16:20:32 +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=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=87=D0=B8?= =?UTF-8?q?=D0=BA=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=D0=B8=D1=82=D1=8C=20=D0=B2=D1=81=D1=91?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/frm_ecm_list.gd | 17 +++++++++++++++++ scenes/frm_ecm_list.tscn | 5 +++-- scenes/scroll-ecm-list.gd | 3 ++- scenes/работа.gd | 9 +++++++++ scripts/interfer.gd | 10 ++++++++++ scripts/signaller.gd | 4 ++++ 6 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 scenes/frm_ecm_list.gd diff --git a/scenes/frm_ecm_list.gd b/scenes/frm_ecm_list.gd new file mode 100644 index 0000000..cf95ef2 --- /dev/null +++ b/scenes/frm_ecm_list.gd @@ -0,0 +1,17 @@ +extends NinePatchRect + + +# Called when the node enters the scene tree for the first time. +func _ready(): + $grd_forced/btn_cancel.button_connect('pressed', Callable(self, 'on_btn_cancel_pressed').bind($grd_forced/btn_cancel)) + + +func on_btn_cancel_pressed(btn): + signaller.emit_signal('interfer_off_all') + await get_tree().create_timer(0.1).timeout + btn.pressed = false + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass diff --git a/scenes/frm_ecm_list.tscn b/scenes/frm_ecm_list.tscn index e19e309..74cc690 100644 --- a/scenes/frm_ecm_list.tscn +++ b/scenes/frm_ecm_list.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://7rvw671tlx2i"] +[gd_scene load_steps=6 format=3 uid="uid://7rvw671tlx2i"] [ext_resource type="Texture2D" uid="uid://cs6i1xwx0pmdk" path="res://data/рамка-панели.png" id="1_6swor"] [ext_resource type="Script" path="res://scenes/scroll-ecm-list.gd" id="2_3x81o"] +[ext_resource type="Script" path="res://scenes/frm_ecm_list.gd" id="2_mt58v"] [ext_resource type="Script" path="res://table/table.gd" id="3_4hydx"] [ext_resource type="PackedScene" uid="uid://da7w3vkhadfwe" path="res://scenes/button-flat.tscn" id="4_7ys3c"] @@ -15,6 +16,7 @@ patch_margin_left = 15 patch_margin_top = 30 patch_margin_right = 15 patch_margin_bottom = 10 +script = ExtResource("2_mt58v") [node name="header" type="Label" parent="."] clip_contents = true @@ -77,5 +79,4 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 text = "Отключить все" -pressed = true metadata/rfi_name = "" diff --git a/scenes/scroll-ecm-list.gd b/scenes/scroll-ecm-list.gd index 4bacd50..683204f 100644 --- a/scenes/scroll-ecm-list.gd +++ b/scenes/scroll-ecm-list.gd @@ -80,7 +80,8 @@ func _ready(): interfer.connect('interfer_update', Callable(self, 'on_interfer_update').bind(table_index)) $table.connect('row_pressed', Callable(self, 'on_row_pressed')) call_deferred('init_table') - + #$btn_cancel.button_connect('pressed', Callable(self, 'on_btn_cancel_pressed').bind($btn_cancel)) + func init_table(): $table.set_header(TABLE_HEADER) diff --git a/scenes/работа.gd b/scenes/работа.gd index e61c58c..6e95c7c 100644 --- a/scenes/работа.gd +++ b/scenes/работа.gd @@ -88,6 +88,7 @@ func _ready(): signaller.connect('threat_selected', Callable(self, 'on_threat_selected').bind(nodes)) signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected').bind(nodes)) signaller.connect('interfer_new', Callable(self, 'on_interfer_new')) + signaller.connect('interfer_off_all', Callable(self, 'interfer_off_all')) interfer.connect('interfer_update', Callable(self, 'on_interfer_new')) func on_enter_tree() -> void: @@ -125,10 +126,18 @@ func on_interfer_new(ecm): bip.set_ecm_visible(true) else: bip.set_ecm_visible(false) else: + print_debug() bip.set_ecm_visible(false) bip.set_track_visible(false) +func interfer_off_all(): + var bips: Array = get_children().filter(func(item): return item.name.is_valid_int()) + for bip in bips: + bip.set_ecm_visible(false) + bip.set_track_visible(false) + + ## Обработчик сигнала обнаружения цели func on_threat_new(th) -> void: var bip = Bip.instantiate() diff --git a/scripts/interfer.gd b/scripts/interfer.gd index a0bdd0f..a3ede81 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -98,6 +98,7 @@ func _ready(): unit.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms)) signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit, ecms)) signaller.connect('interfer_new', Callable(self, 'send_ecm').bind(unit)) + signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit, ecms)) # Проверяет состояние отправки пакета и если не доставлен, повторяет отправку func on_timer_check_state(unit, ecms, resend_timeout): @@ -174,6 +175,7 @@ func on_interfer_create(btn, sel_threats, unit, ecms): if interfer_name == 'off': signaller.emit_signal('interfer_off', ecm, ecms, thrs) push_id(ecm.ispp) + thrs.erase(ispp) ecm.tick_tx = Time.get_ticks_msec() @@ -182,6 +184,14 @@ func send_ecm(ecm, unit): unit.tx_stack.append(json_data) +func on_interfer_off_all(unit, ecms): + for ecm in ecms.values(): + ecm.krp = INTERFER_OFF + push_id(ecm.ispp) + send_ecm(ecm, unit) + signaller.emit_signal('interfer_off',ecm, ecms, thrs) + + func pop_id(): var id = 0 if len(id_array): diff --git a/scripts/signaller.gd b/scripts/signaller.gd index 1f81116..dcb47a0 100644 --- a/scripts/signaller.gd +++ b/scripts/signaller.gd @@ -54,6 +54,10 @@ signal interfer_new (ecm: interfer.Interfer) signal interfer_off (ecm: interfer.Interfer, ecms: Dictionary, thrs: Dictionary) +## Вызывается при нажатии отключить все помехи +signal interfer_off_all () + + ## Вызывается, когда отключается действующая помеха ## [param ecm] - Выбранная помеха signal interfer_selected (ecm: interfer.Interfer)