Merge remote-tracking branch 'lepshiy/master'

This commit is contained in:
sasha80
2024-11-25 14:41:56 +03:00
5 changed files with 50 additions and 11 deletions

View File

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

View File

@@ -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):
@@ -301,9 +302,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)
## Управляет состоянием кнопок в радиогруппе при выборе помехи.
@@ -502,3 +504,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()

View File

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

View File

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

View File

@@ -107,13 +107,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)
## Производит приём целей.