66 lines
2.7 KiB
GDScript
66 lines
2.7 KiB
GDScript
class_name scroll_params extends ScrollContainer
|
|
|
|
## Отображение параметров цели.
|
|
|
|
const CellLineEdit = preload('res://table/ячейка-2.tscn') ## Ячейка таблицы.
|
|
const TableHeader = preload('res://table/header.tscn') ## Ячейка заголовок таблицы.
|
|
|
|
|
|
const TABLE_HEADER = [ TableHeader, TableHeader ] ## Описание ряда заголовка.
|
|
const TABLE_ROW = [ CellLineEdit, CellLineEdit ] ## Описание ряда.
|
|
const TABLE_HEADERS_TEXT = ['Параметр', 'Значение' ] ## Назания колонок.
|
|
const TABLE_COLUMN_SIZE = [ 370, 85 ] ## Ширины колонок.
|
|
|
|
|
|
## Параметры цели для отображения в таблице.[br]
|
|
## [b]val[0][/b] - Индекс строки.[br][b]val[1][/b] - Содержание.
|
|
const TABLE_PARAMS = {
|
|
'baud': [0, 'Модуляционная скорость, бод'],
|
|
'freqm': [1, 'Режим смены частоты.'],
|
|
'power': [2, 'Уровень сигнала, дБм.'],
|
|
'tmod': [3, 'Тип модуляции'],
|
|
'width': [4, 'Занимая полоса частот, МГц.'],
|
|
'rkrp': [5, 'Рекомендуемая помеха'] }
|
|
|
|
|
|
## Обрабатывает сигнал [signal threats.threat_selected].
|
|
func on_threat_selected(th):
|
|
$table.set_meta('id', th.id)
|
|
on_threat_update(th)
|
|
|
|
|
|
func init_table():
|
|
for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW)
|
|
for p in TABLE_PARAMS.values():
|
|
$table.set_node_text(0, p[0], p[1])
|
|
$table.set_node_alligment(0, p[0], HORIZONTAL_ALIGNMENT_LEFT)
|
|
$table.set_node_editable(0, p[0], false)
|
|
$table.set_node_editable(1, p[0], false)
|
|
$table.set_columns_min_size(TABLE_COLUMN_SIZE)
|
|
$table.set_meta('id', 0)
|
|
|
|
|
|
func _ready() -> void:
|
|
signaller.connect('threat_selected', Callable(self, 'on_threat_selected'))
|
|
signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel'))
|
|
threats.connect('threat_update', Callable(self, 'on_threat_update'))
|
|
call_deferred('init_table')
|
|
|
|
|
|
## Обрабатывает сигнал [signal threats.threat_update].
|
|
## Обновляет отображение только для выбранной цели.
|
|
func on_threat_update(th):
|
|
if not th.selected: return
|
|
if th.id != $table.get_meta('id'): return
|
|
var mnms = tools.get_members_names(th)
|
|
for member_name in mnms:
|
|
if not TABLE_PARAMS.has(member_name): continue
|
|
var p = TABLE_PARAMS[member_name]
|
|
var val = th.get(member_name)
|
|
$table.set_node_text(1, p[0], '%s' % val)
|
|
|
|
|
|
func on_rto_threat_unsel(_th_id):
|
|
for item in len(TABLE_PARAMS):
|
|
$table.set_node_text(1, item, '')
|