Доработка, добавлен обработчик кнопки отключить всё.

This commit is contained in:
MaD_CaT
2023-12-04 16:20:32 +03:00
parent e9eff810e0
commit 5740964d09
6 changed files with 45 additions and 3 deletions

17
scenes/frm_ecm_list.gd Normal file
View File

@@ -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

View File

@@ -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 = "<off>"

View File

@@ -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)

View File

@@ -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()

View File

@@ -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):

View File

@@ -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)