From 86420ad320fa7969c0f8934bcce1f1cf728d70a4 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Tue, 23 Sep 2025 16:31:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5=D0=BD=D0=B4=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20=D1=82=D0=B8=D0=BF=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BC=D0=B5=D1=85=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interfers.gd | 3 ++- main.tscn | 24 ++++++++++++------------ project.godot | 2 +- threats.gd | 52 ++++++++++++++++++++++++++++++++++++++++----------- 4 files changed, 56 insertions(+), 25 deletions(-) diff --git a/interfers.gd b/interfers.gd index 748cfab..c085b60 100644 --- a/interfers.gd +++ b/interfers.gd @@ -48,11 +48,12 @@ const SVK = ['Подготовка', 'Выполнено', 'Ошибка', 'За const COLUMN_OPT = [[COLUMN_SVK, SVK]] const COLUMN_OPT_BTN = [COLUMN_SVK] const IQ_FL_NAME = 'IQ-файл' +const LCHM = 'Линейная ЧМ' const INTERFER_NAMES: Dictionary = { 'off' : null, 'ПСП + ФМ-2' : null, - 'Линейная ЧМ' : null, + LCHM : null, IQ_FL_NAME : ['SRNGPS.pcm', 'MCHM1.pcm', 'PDM2_20.pcm', diff --git a/main.tscn b/main.tscn index 0620c93..35fb8a5 100644 --- a/main.tscn +++ b/main.tscn @@ -25,10 +25,9 @@ self_modulate = Color(0, 0, 0, 1) layout_mode = 0 offset_right = 1594.0 offset_bottom = 897.0 -current_tab = 1 +current_tab = 0 [node name="threats" type="Panel" parent="ColorRect/tabs"] -visible = false self_modulate = Color(0, 0, 0, 1) light_mask = 2 layout_mode = 2 @@ -39,7 +38,7 @@ metadata/_tab_index = 0 layout_mode = 0 offset_left = 5.0 offset_top = 78.0 -offset_right = 1597.0 +offset_right = 1693.0 offset_bottom = 876.0 [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"] layout_mode = 0 -offset_left = 1533.0 +offset_left = 1640.0 offset_top = -2.0 -offset_right = 1581.0 +offset_right = 1688.0 offset_bottom = 46.0 texture_normal = ExtResource("3_0aqi0") texture_pressed = ExtResource("4_s8cxp") [node name="btn_del" type="TextureButton" parent="ColorRect/tabs/threats"] layout_mode = 0 -offset_left = 1499.0 +offset_left = 1606.0 offset_top = 1.0 -offset_right = 1547.0 +offset_right = 1654.0 offset_bottom = 67.0 scale = Vector2(0.62, 0.62) texture_normal = ExtResource("6_hj3vd") [node name="btn_save" type="TextureButton" parent="ColorRect/tabs/threats"] layout_mode = 0 -offset_left = 1454.0 -offset_top = 0.999999 -offset_right = 1966.0 +offset_left = 1561.0 +offset_top = 1.0 +offset_right = 2073.0 offset_bottom = 513.0 scale = Vector2(0.08, 0.08) texture_normal = ExtResource("6_xh685") [node name="btn_load" type="TextureButton" parent="ColorRect/tabs/threats"] layout_mode = 0 -offset_left = 1410.0 +offset_left = 1517.0 offset_top = 1.0 -offset_right = 1922.0 +offset_right = 2029.0 offset_bottom = 513.0 scale = Vector2(0.08, 0.08) texture_normal = ExtResource("7_v45w5") @@ -137,6 +136,7 @@ offset_bottom = 50.0 text = "100 целей" [node name="pomehi" type="Panel" parent="ColorRect/tabs"] +visible = false layout_mode = 2 metadata/_tab_index = 1 diff --git a/project.godot b/project.godot index 83a1e4d..7e64135 100644 --- a/project.godot +++ b/project.godot @@ -26,7 +26,7 @@ fs="*res://fs.gd" [display] -window/size/viewport_width=1600 +window/size/viewport_width=1700 window/size/viewport_height=900 window/stretch/mode="2d" diff --git a/threats.gd b/threats.gd index a31648c..ee86b27 100644 --- a/threats.gd +++ b/threats.gd @@ -16,13 +16,13 @@ const TableCellType5 = preload('res://ячейка-2.tscn') const TableCellType6 = preload('res://кнопка-5.tscn') const TableHeader = preload('res://table/header.tscn') -# Индекс колонки: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -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_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_ROW_TYPES = [ TableCellType1, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6, TableCellType6, TableCellType5, TableCellType6, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5] -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_COLUMN_SIZES = [ 82, 82, 82, 82, 82, 90, 150, 150, 80, 150, 82, 82, 82, 82, 82, 82] +# Индекс колонки: 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_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, HORIZONTAL_ALIGNMENT_CENTER] +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, HORIZONTAL_ALIGNMENT_CENTER] +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_AOA = 1 # Курсовой угол на источник сигнала, градусы @@ -40,6 +40,7 @@ const COLUMN_SALT = 12 # Координаты старта, высота о const COLUMN_LAT = 13 # Текущие координаты, долгота в градусах const COLUMN_LON = 14 # Текущие координаты, широта в градусах const COLUMN_ALT = 15 # Текущая высота, метры +const COLUMN_REC = 16 # Текущая высота, метры # Индексы колонок, которым можно задавать выравнивание текста const TABLE_ALLIGNED_COLUMNS = [ @@ -83,9 +84,11 @@ const FREQM = ['<неопр.>', 'fhss', 'lfm', 'const'] const M_PROTO = ['<неопр.>', '3dlink', 'skyhopperpro', 'picardiooem', 'solo7', 'j11', 'mavlink', 'ltm', 'hc12', 'df1', ] +var rkrp = [] + # Номера колонок -const COLUMN_OPT = [[COLUMN_TMOD, MODE_TYPES], [COLUMN_FREQM, FREQM], [COLUMN_PROTO, M_PROTO]] -const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_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, COLUMN_REC] const ID_ARRAY_LEN = 150 # Размер пула номеров целей @@ -102,7 +105,9 @@ class Threat: 'tmod':['<неопр.>',false], 'freqm':['<неопр.>',false], 'baud':[0.0,false], - 'proto':['<неопр.>',false], + 'rparams': [{},false], + 'rkrp': ['<неопр.>', false], + 'proto':['<неопр.>', false], 'slon':[0.0,false], 'slat':[0.0,false], 'salt':[0.0,false], @@ -144,6 +149,7 @@ class Threat: new_rows.append(_check_value(row.lat)) new_rows.append(_check_value(row.lon)) new_rows.append(_check_value(row.alt)) + new_rows.append(_check_value(row.rkrp)) return new_rows @@ -267,7 +273,25 @@ class Threat: 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): # Инициализация вкладки с целями + set_rkrp() for i in range(ID_ARRAY_LEN): # Заполняет массив ID целей id_array.append(i+1) 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) COLUMN_ALT: return treat.set_alt_pressed(val) - + COLUMN_REC: + return treat.set_rname(val) func on_row_pressed(i_row: int, table): table.clear_rows_selected() @@ -532,3 +557,8 @@ func on_thr_gen(table): 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, 'item_selected', 'on_item_selected', COLUMN_OPT_BTN, []) + +func set_rkrp(): + rkrp.append('<неопр.>') + for key in Interfers.INTERFER_NAMES.keys(): + rkrp.append(key)