Доработка. Добавлен рекомендованный тип помехи.

This commit is contained in:
MaD_CaT
2025-09-23 16:31:04 +03:00
parent db3e4bf574
commit 86420ad320
4 changed files with 56 additions and 25 deletions

View File

@@ -48,11 +48,12 @@ const SVK = ['Подготовка', 'Выполнено', 'Ошибка', 'За
const COLUMN_OPT = [[COLUMN_SVK, SVK]] const COLUMN_OPT = [[COLUMN_SVK, SVK]]
const COLUMN_OPT_BTN = [COLUMN_SVK] const COLUMN_OPT_BTN = [COLUMN_SVK]
const IQ_FL_NAME = 'IQ-файл' const IQ_FL_NAME = 'IQ-файл'
const LCHM = 'Линейная ЧМ'
const INTERFER_NAMES: Dictionary = { const INTERFER_NAMES: Dictionary = {
'off' : null, 'off' : null,
'ПСП + ФМ-2' : null, 'ПСП + ФМ-2' : null,
'Линейная ЧМ' : null, LCHM : null,
IQ_FL_NAME : ['SRNGPS.pcm', IQ_FL_NAME : ['SRNGPS.pcm',
'MCHM1.pcm', 'MCHM1.pcm',
'PDM2_20.pcm', 'PDM2_20.pcm',

View File

@@ -25,10 +25,9 @@ self_modulate = Color(0, 0, 0, 1)
layout_mode = 0 layout_mode = 0
offset_right = 1594.0 offset_right = 1594.0
offset_bottom = 897.0 offset_bottom = 897.0
current_tab = 1 current_tab = 0
[node name="threats" type="Panel" parent="ColorRect/tabs"] [node name="threats" type="Panel" parent="ColorRect/tabs"]
visible = false
self_modulate = Color(0, 0, 0, 1) self_modulate = Color(0, 0, 0, 1)
light_mask = 2 light_mask = 2
layout_mode = 2 layout_mode = 2
@@ -39,7 +38,7 @@ metadata/_tab_index = 0
layout_mode = 0 layout_mode = 0
offset_left = 5.0 offset_left = 5.0
offset_top = 78.0 offset_top = 78.0
offset_right = 1597.0 offset_right = 1693.0
offset_bottom = 876.0 offset_bottom = 876.0
[node name="table_t" type="GridContainer" parent="ColorRect/tabs/threats/scroll_thr"] [node name="table_t" type="GridContainer" parent="ColorRect/tabs/threats/scroll_thr"]
@@ -49,36 +48,36 @@ node_type_file = "res://ячейка-1.tscn"
[node name="btn_add" type="TextureButton" parent="ColorRect/tabs/threats"] [node name="btn_add" type="TextureButton" parent="ColorRect/tabs/threats"]
layout_mode = 0 layout_mode = 0
offset_left = 1533.0 offset_left = 1640.0
offset_top = -2.0 offset_top = -2.0
offset_right = 1581.0 offset_right = 1688.0
offset_bottom = 46.0 offset_bottom = 46.0
texture_normal = ExtResource("3_0aqi0") texture_normal = ExtResource("3_0aqi0")
texture_pressed = ExtResource("4_s8cxp") texture_pressed = ExtResource("4_s8cxp")
[node name="btn_del" type="TextureButton" parent="ColorRect/tabs/threats"] [node name="btn_del" type="TextureButton" parent="ColorRect/tabs/threats"]
layout_mode = 0 layout_mode = 0
offset_left = 1499.0 offset_left = 1606.0
offset_top = 1.0 offset_top = 1.0
offset_right = 1547.0 offset_right = 1654.0
offset_bottom = 67.0 offset_bottom = 67.0
scale = Vector2(0.62, 0.62) scale = Vector2(0.62, 0.62)
texture_normal = ExtResource("6_hj3vd") texture_normal = ExtResource("6_hj3vd")
[node name="btn_save" type="TextureButton" parent="ColorRect/tabs/threats"] [node name="btn_save" type="TextureButton" parent="ColorRect/tabs/threats"]
layout_mode = 0 layout_mode = 0
offset_left = 1454.0 offset_left = 1561.0
offset_top = 0.999999 offset_top = 1.0
offset_right = 1966.0 offset_right = 2073.0
offset_bottom = 513.0 offset_bottom = 513.0
scale = Vector2(0.08, 0.08) scale = Vector2(0.08, 0.08)
texture_normal = ExtResource("6_xh685") texture_normal = ExtResource("6_xh685")
[node name="btn_load" type="TextureButton" parent="ColorRect/tabs/threats"] [node name="btn_load" type="TextureButton" parent="ColorRect/tabs/threats"]
layout_mode = 0 layout_mode = 0
offset_left = 1410.0 offset_left = 1517.0
offset_top = 1.0 offset_top = 1.0
offset_right = 1922.0 offset_right = 2029.0
offset_bottom = 513.0 offset_bottom = 513.0
scale = Vector2(0.08, 0.08) scale = Vector2(0.08, 0.08)
texture_normal = ExtResource("7_v45w5") texture_normal = ExtResource("7_v45w5")
@@ -137,6 +136,7 @@ offset_bottom = 50.0
text = "100 целей" text = "100 целей"
[node name="pomehi" type="Panel" parent="ColorRect/tabs"] [node name="pomehi" type="Panel" parent="ColorRect/tabs"]
visible = false
layout_mode = 2 layout_mode = 2
metadata/_tab_index = 1 metadata/_tab_index = 1

View File

@@ -26,7 +26,7 @@ fs="*res://fs.gd"
[display] [display]
window/size/viewport_width=1600 window/size/viewport_width=1700
window/size/viewport_height=900 window/size/viewport_height=900
window/stretch/mode="2d" window/stretch/mode="2d"

View File

@@ -16,13 +16,13 @@ const TableCellType5 = preload('res://ячейка-2.tscn')
const TableCellType6 = preload('res://кнопка-5.tscn') const TableCellType6 = preload('res://кнопка-5.tscn')
const TableHeader = preload('res://table/header.tscn') const TableHeader = preload('res://table/header.tscn')
# Индекс колонки: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # Индекс колонки: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
const TABLE_HEADERS = ['ID Цели', 'Курc.град', 'Частота', 'Ш. диап.', 'Ампл.', 'T обновл.', 'Мод.', 'Реж. см. F', 'Ск. пер.', 'Протокол', 'Ст. дол.', 'Ст. шир.', 'Cт. выс.', 'Тек. дол.', 'Тек. шир.', 'Тек. выс.', ] const TABLE_HEADERS = ['ID Цели', 'Курc.град', 'Частота', 'Ш. диап.', 'Ампл.', 'T обновл.', 'Мод.', 'Реж. см. F', 'Ск. пер.', 'Протокол', 'Ст. дол.', 'Ст. шир.', 'Cт. выс.', 'Тек. дол.', 'Тек. шир.', 'Тек. выс.', 'Рек. тип помехи']
const TABLE_HEADER_TYPES = [ TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader] const TABLE_HEADER_TYPES = [ TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader, TableHeader]
const TABLE_HEADER_ALIGNMENTS = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER] const TABLE_HEADER_ALIGNMENTS = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
const TABLE_ROW_TYPES = [ TableCellType1, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6, TableCellType6, TableCellType5, TableCellType6, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5] const TABLE_ROW_TYPES = [ TableCellType1, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6, TableCellType6, TableCellType5, TableCellType6, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6]
const TABLE_ROW_ALIGNMENTS = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_LEFT, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER] const TABLE_ROW_ALIGNMENTS = [ HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_LEFT, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
const TABLE_COLUMN_SIZES = [ 82, 82, 82, 82, 82, 90, 150, 150, 80, 150, 82, 82, 82, 82, 82, 82] const TABLE_COLUMN_SIZES = [ 82, 82, 82, 82, 82, 90, 150, 150, 80, 150, 82, 82, 82, 82, 82, 82, 100]
const COLUMN_ID = 0 # Идентификатор цели const COLUMN_ID = 0 # Идентификатор цели
const COLUMN_AOA = 1 # Курсовой угол на источник сигнала, градусы const COLUMN_AOA = 1 # Курсовой угол на источник сигнала, градусы
@@ -40,6 +40,7 @@ const COLUMN_SALT = 12 # Координаты старта, высота о
const COLUMN_LAT = 13 # Текущие координаты, долгота в градусах const COLUMN_LAT = 13 # Текущие координаты, долгота в градусах
const COLUMN_LON = 14 # Текущие координаты, широта в градусах const COLUMN_LON = 14 # Текущие координаты, широта в градусах
const COLUMN_ALT = 15 # Текущая высота, метры const COLUMN_ALT = 15 # Текущая высота, метры
const COLUMN_REC = 16 # Текущая высота, метры
# Индексы колонок, которым можно задавать выравнивание текста # Индексы колонок, которым можно задавать выравнивание текста
const TABLE_ALLIGNED_COLUMNS = [ const TABLE_ALLIGNED_COLUMNS = [
@@ -83,9 +84,11 @@ const FREQM = ['<неопр.>', 'fhss', 'lfm', 'const']
const M_PROTO = ['<неопр.>', '3dlink', 'skyhopperpro', 'picardiooem', 'solo7', 'j11', const M_PROTO = ['<неопр.>', '3dlink', 'skyhopperpro', 'picardiooem', 'solo7', 'j11',
'mavlink', 'ltm', 'hc12', 'df1', ] 'mavlink', 'ltm', 'hc12', 'df1', ]
var rkrp = []
# Номера колонок # Номера колонок
const COLUMN_OPT = [[COLUMN_TMOD, MODE_TYPES], [COLUMN_FREQM, FREQM], [COLUMN_PROTO, M_PROTO]] var COLUMN_OPT = [[COLUMN_TMOD, MODE_TYPES], [COLUMN_FREQM, FREQM], [COLUMN_PROTO, M_PROTO], [COLUMN_REC, rkrp]]
const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_PROTO] const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_PROTO, COLUMN_REC]
const ID_ARRAY_LEN = 150 # Размер пула номеров целей const ID_ARRAY_LEN = 150 # Размер пула номеров целей
@@ -102,6 +105,8 @@ class Threat:
'tmod':['<неопр.>',false], 'tmod':['<неопр.>',false],
'freqm':['<неопр.>',false], 'freqm':['<неопр.>',false],
'baud':[0.0,false], 'baud':[0.0,false],
'rparams': [{},false],
'rkrp': ['<неопр.>', false],
'proto':['<неопр.>', false], 'proto':['<неопр.>', false],
'slon':[0.0,false], 'slon':[0.0,false],
'slat':[0.0,false], 'slat':[0.0,false],
@@ -144,6 +149,7 @@ class Threat:
new_rows.append(_check_value(row.lat)) new_rows.append(_check_value(row.lat))
new_rows.append(_check_value(row.lon)) new_rows.append(_check_value(row.lon))
new_rows.append(_check_value(row.alt)) new_rows.append(_check_value(row.alt))
new_rows.append(_check_value(row.rkrp))
return new_rows return new_rows
@@ -267,7 +273,25 @@ class Threat:
return value return value
func set_rname(val):
var value = str(val)
row.rkrp[0] = value
row.rkrp[1] = false if value == '<неопр.>' else true
row.rparams[1] = row.rkrp[1]
row.rparams[0] = {}
if row.freq[1]:
row.rparams[0]['freq'] = row.freq[0]
if row.width[1]:
row.rparams[0]['width'] = row.width[0]
if row.rkrp[0] == Interfers.LCHM:
row.rparams[0]['period'] = 1.0
elif row.rkrp[0] == Interfers.IQ_FL_NAME:
row.rparams[0]['filename'] = Interfers.INTERFER_NAMES[Interfers.IQ_FL_NAME][0]
return value
func init_treats(table, nodes): # Инициализация вкладки с целями func init_treats(table, nodes): # Инициализация вкладки с целями
set_rkrp()
for i in range(ID_ARRAY_LEN): # Заполняет массив ID целей for i in range(ID_ARRAY_LEN): # Заполняет массив ID целей
id_array.append(i+1) id_array.append(i+1)
table.set_header(TABLE_HEADER_TYPES) table.set_header(TABLE_HEADER_TYPES)
@@ -407,7 +431,8 @@ func set_value(val : String, treat_id : String, column : int):
return treat.set_lat(val) return treat.set_lat(val)
COLUMN_ALT: COLUMN_ALT:
return treat.set_alt_pressed(val) return treat.set_alt_pressed(val)
COLUMN_REC:
return treat.set_rname(val)
func on_row_pressed(i_row: int, table): func on_row_pressed(i_row: int, table):
table.clear_rows_selected() table.clear_rows_selected()
@@ -532,3 +557,8 @@ func on_thr_gen(table):
init_opt_btns(table.get_rows_count()-1, table, threat) init_opt_btns(table.get_rows_count()-1, table, threat)
table.connect_columns(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, []) table.connect_columns(self, 'text_submitted', 'on_edit_entry', TABLE_ENTRY_COLUMNS, [])
table.connect_columns(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, []) table.connect_columns(self, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, [])
func set_rkrp():
rkrp.append('<неопр.>')
for key in Interfers.INTERFER_NAMES.keys():
rkrp.append(key)