Реализация кнопок принудительно (паника)
Изменение metadata в bort-rtr
This commit is contained in:
@@ -1,13 +1,40 @@
|
||||
class_name frm_ecm_list extends NinePatchRect
|
||||
|
||||
|
||||
const srn_sectors: Dictionary = {
|
||||
'srni1': [4, 5, 6, 7, 8, 9, 10, 11] }
|
||||
|
||||
const jtids_sectors: Dictionary = {
|
||||
'svi1': [12, 13, 14, 15, 16, 17, 18, 19] }
|
||||
|
||||
const kupd_sectors: Dictionary = {}
|
||||
|
||||
const panika_sectors: Dictionary = {
|
||||
'lchm1': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 21, 22, 23, 24, 25, 26, 27],
|
||||
'srni1': [12, 13, 14, 15, 16, 17, 18, 19] }
|
||||
|
||||
|
||||
## Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
var nodes: Array = get_tree().get_nodes_in_group('группа-принудительно')
|
||||
$grd_forced/btn_cancel.button_connect('pressed', Callable(self, 'on_btn_cancel_pressed').bind($grd_forced/btn_cancel))
|
||||
$grd_forced/btn_panika.button_connect('pressed', Callable(self, 'on_btn_panika_pressed').bind($grd_forced/btn_panika))
|
||||
nodes.any(func(btn): btn.button_connect('pressed', Callable(self, 'on_btn_pressed').bind(btn, nodes)))
|
||||
|
||||
|
||||
func on_btn_cancel_pressed(btn):
|
||||
signaller.emit_signal('interfer_off_all')
|
||||
await get_tree().create_timer(0.1).timeout
|
||||
btn.pressed = false
|
||||
|
||||
|
||||
func on_btn_pressed(btn_this, btn_others):
|
||||
for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other)
|
||||
signaller.emit_signal('interfer_off_all')
|
||||
if btn_this == $grd_forced/btn_panika:
|
||||
signaller.emit_signal('interfer_prenuditelno', panika_sectors)
|
||||
elif btn_this == $grd_forced/btn_jtids:
|
||||
signaller.emit_signal('interfer_prenuditelno', jtids_sectors)
|
||||
elif btn_this == $grd_forced/btn_kupd:
|
||||
signaller.emit_signal('interfer_prenuditelno', kupd_sectors)
|
||||
elif btn_this == $grd_forced/btn_srn:
|
||||
signaller.emit_signal('interfer_prenuditelno', srn_sectors)
|
||||
|
||||
@@ -154,9 +154,10 @@ func _ready():
|
||||
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, 'on_interfer_off_all'))
|
||||
signaller.connect('interfer_prenuditelno', Callable(self, 'on_interfer_prenuditelno'))
|
||||
signaller.connect('fs_selected', Callable(self, 'on_fs_selected'))
|
||||
signaller.connect('fs_update_color', Callable(self, 'on_fs_update_color'))
|
||||
interfer.connect('interfer_update', Callable(self, 'on_interfer_new'))
|
||||
signaller.connect('fs_update_color', Callable(self, 'on_fs_update_color'))
|
||||
|
||||
|
||||
func get_all_nodes(root):
|
||||
@@ -302,9 +303,10 @@ func on_button_select(btn_this, btn_others) -> void:
|
||||
func on_button_pressed(btn_this, btn_others) -> void:
|
||||
var fs_arr: Array = []
|
||||
for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other)
|
||||
var interfer_name: String = btn_this.get_meta('rfi_name')
|
||||
for key in fs_selected.keys():
|
||||
fs_arr.append(get_fs_param(key))
|
||||
signaller.emit_signal('interfer_init', btn_this, fs_arr)
|
||||
signaller.emit_signal('interfer_init', interfer_name, fs_arr)
|
||||
|
||||
|
||||
## Управляет состоянием кнопок в радиогруппе при выборе помехи.
|
||||
@@ -503,3 +505,11 @@ func on_fs_update_color(ecms):
|
||||
for ecm in ecms.values():
|
||||
set_fs_color(ecm)
|
||||
update_fs_colors()
|
||||
|
||||
func on_interfer_prenuditelno (prenuditelno_sectors):
|
||||
for key in prenuditelno_sectors:
|
||||
var sectors = []
|
||||
for sector in prenuditelno_sectors[key]:
|
||||
sectors.append(get_fs_param(sector))
|
||||
signaller.emit_signal('interfer_init', key, sectors)
|
||||
update_fs_colors()
|
||||
|
||||
@@ -166,12 +166,11 @@ func on_data_capsrpb_received(unit: capsrpb.CapsRpb, ecms: Dictionary):
|
||||
|
||||
|
||||
## Вызыватся, когда пользователь выбрал помеху и выбраны цели.
|
||||
func on_interfer_create(btn, sel_threats, fs_arr, _unit, ecms):
|
||||
func on_interfer_create(interfer_name, sel_threats, fs_arr, _unit, ecms):
|
||||
for item in sel_threats:
|
||||
var param: Dictionary = {}
|
||||
var kni: float = item.aoa
|
||||
var id = item.id
|
||||
var interfer_name: String = btn.get_meta('rfi_name')
|
||||
param['freq'] = item.freq
|
||||
param['width'] = item.width
|
||||
interfer_create(interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0])
|
||||
@@ -180,7 +179,6 @@ func on_interfer_create(btn, sel_threats, fs_arr, _unit, ecms):
|
||||
var param: Dictionary = {}
|
||||
var kni: float = item[0]
|
||||
var id = item[3]
|
||||
var interfer_name: String = btn.get_meta('rfi_name')
|
||||
param['freq'] = item[1]
|
||||
param['width'] = item[2]
|
||||
interfer_create(interfer_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1])
|
||||
|
||||
@@ -89,13 +89,13 @@ signal rto_threat_unsel_all()
|
||||
|
||||
## Вызывается, когда пользователь выбирает помеху.[br]
|
||||
## [param btn] - Нажатая кнопка помехи.
|
||||
signal interfer_init(btn: PanelContainer, fs_arr: Array)
|
||||
signal interfer_init(interfer_name: String, fs_arr: Array)
|
||||
|
||||
|
||||
## Вызывается, когда выбраны цели для постановки помех.[br]
|
||||
## [param btn] - Нажатая кнопка помехи.[br]
|
||||
## [param sel_threats] - Cписок целей.
|
||||
signal interfer_create(btn: PanelContainer, sel_threats: Array, fs_arr: Array)
|
||||
signal interfer_create(interfer_name: String, sel_threats: Array, fs_arr: Array)
|
||||
|
||||
|
||||
## Вызывается, когда создалась новая помеха.[br]
|
||||
@@ -110,10 +110,14 @@ signal interfer_new(ecm: interfer.Interfer)
|
||||
signal interfer_off(ecm: interfer.Interfer, ecms: Dictionary, thrs: Dictionary)
|
||||
|
||||
|
||||
## Вызывается при нажатии отключить все помехи.
|
||||
## Вызывается при нажатии отключить.
|
||||
signal interfer_off_all()
|
||||
|
||||
|
||||
## Вызывается при нажатии паника.
|
||||
signal interfer_prenuditelno(interfer_sectors: Dictionary)
|
||||
|
||||
|
||||
## Вызывается при получении внешнего целеуказания.
|
||||
## [param interfer_params] - Параметры полученной помехи от 5П-28.[br]
|
||||
signal interfer_rcv(interfer_params: Array)
|
||||
|
||||
@@ -106,13 +106,13 @@ func on_threat_selected(th, threats):
|
||||
|
||||
|
||||
## Формирует список выбранных целей для включения помехи.
|
||||
func on_interfer_init(btn, fs_arr, threats):
|
||||
func on_interfer_init(interfer_name, fs_arr, threats):
|
||||
var sel_threats: Array = []
|
||||
for threat in threats.values():
|
||||
if threat.selected:
|
||||
sel_threats.append(threat)
|
||||
if len(sel_threats) or (len(fs_arr)):
|
||||
signaller.emit_signal('interfer_create', btn, sel_threats, fs_arr)
|
||||
signaller.emit_signal('interfer_create', interfer_name, sel_threats, fs_arr)
|
||||
|
||||
|
||||
## Производит приём целей.
|
||||
|
||||
Reference in New Issue
Block a user