From db3e4bf5745bd9720aac19d22d7c40685b8fb827 Mon Sep 17 00:00:00 2001 From: MaD_CaT Date: Thu, 4 Sep 2025 15:40:33 +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=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B4=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BF=D1=80=D0=BE=D1=82=D0=BE=D0=BA=D0=BE=D0=BB?= =?UTF-8?q?=20=D1=81=D0=BE=D0=BF=D1=80=D1=8F=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fs.gd | 142 ++++++++++++++++++++++++--------------------------- interfers.gd | 42 +++++++++++---- main.tscn | 4 +- 3 files changed, 101 insertions(+), 87 deletions(-) diff --git a/fs.gd b/fs.gd index ea61b40..9d0889e 100644 --- a/fs.gd +++ b/fs.gd @@ -33,34 +33,34 @@ const LBLS_PARAM: Array = [ const OPT_BTN_TEXT: Array = ['не исправно', 'исправно', 'не определено'] # [номер сектора, номер литеры, номер ФС, координата x, координата y] const FS_PARAM = [ - [1, 1, 17, 0, 0], - [1, 2, 19, 50, 0], - [1, 3, 18, 100, 0], - [1, 4, 20, 150, 0], - [1, 5, 21, 200, 0], - [1, 6, 22, 250, 0], - [1, 7, 23, 300, 0], - [2, 1, 33, 0, 50], - [2, 2, 34, 50, 50], - [2, 3, 35, 100, 50], - [2, 4, 36, 150, 50], - [2, 5, 37, 200, 50], - [2, 6, 38, 250, 50], - [2, 7, 39, 300, 50], - [3, 1, 49, 0, 100], - [3, 2, 51, 50, 100], - [3, 3, 50, 100, 100], - [3, 4, 52, 150, 100], - [3, 5, 53, 200, 100], - [3, 6, 54, 250, 100], - [3, 7, 55, 300, 100], - [4, 1, 65, 0, 150], - [4, 2, 66, 50, 150], - [4, 3, 67, 100, 150], - [4, 4, 68, 150, 150], - [4, 5, 69, 200, 150], - [4, 6, 70, 250, 150], - [4, 7, 71, 300, 150], + [1, 1, 11, 0, 0], + [1, 2, 12, 50, 0], + [1, 3, 13, 100, 0], + [1, 4, 14, 150, 0], + [1, 5, 15, 200, 0], + [1, 6, 16, 250, 0], + [1, 7, 17, 300, 0], + [2, 1, 21, 0, 50], + [2, 2, 22, 50, 50], + [2, 3, 23, 100, 50], + [2, 4, 24, 150, 50], + [2, 5, 25, 200, 50], + [2, 6, 26, 250, 50], + [2, 7, 27, 300, 50], + [3, 1, 31, 0, 100], + [3, 2, 32, 50, 100], + [3, 3, 33, 100, 100], + [3, 4, 34, 150, 100], + [3, 5, 35, 200, 100], + [3, 6, 36, 250, 100], + [3, 7, 37, 300, 100], + [4, 1, 41, 0, 150], + [4, 2, 42, 50, 150], + [4, 3, 43, 100, 150], + [4, 4, 44, 150, 150], + [4, 5, 45, 200, 150], + [4, 6, 46, 250, 150], + [4, 7, 47, 300, 150], ] const MSG8_DATA = [ ['roll','Крен корабля, градусы:'], @@ -222,56 +222,50 @@ func set_fs(interfer: Interfers.Interfer): var lit: int var freq = interfer.get_val('freq') var width = interfer.get_val('width') - if (freq == '') or (width == ''): - fs_of_old(interfer) - return 2 - for i in range(len(BANDS)): - if (float(freq) >= BANDS[i][0]) and (float(freq) <= BANDS[i][1]): - lit = i+1 - - if (float(interfer.options['kni']) < 0) or (float(interfer.options['kni'] > 360)): - fs_of_old(interfer) - return 2 - for i in range(len(SECTORS)): - if i < 1: - if (float(interfer.options['kni']) >= SECTORS[i][0]) or (float(interfer.options['kni']) <= SECTORS[i][1]): - sec = i+1 - else: - if (float(interfer.options['kni']) >= SECTORS[i][0]) and (float(interfer.options['kni']) <= SECTORS[i][1]): - sec = i+1 - var fs_arr: Array - fs_arr = FS_PARAM.filter(func(item): return item[0] == sec) - fs_arr = fs_arr.filter(func(item): return item[1] == lit) - if len(fs_arr) > 0: - var fs_num = fs_arr[0][2] - if g_fs_dict[fs_num].isg == 1: - if g_fs_dict[fs_num].interfer == null: - g_fs_dict[fs_num].interfer = interfer - if (interfer.active_fs != g_fs_dict[fs_num]) and (interfer.active_fs != null): - fs_off(interfer.active_fs) - interfer.active_fs = g_fs_dict[fs_num] - g_fs_dict[fs_num].pow = float(interfer.options['powp']) - g_fs_dict[fs_num].freq = float(freq) - g_fs_dict[fs_num].width = float(width) - update_fs(g_fs_dict[fs_num], float(interfer.options['powp']), float(freq), float(width)) - g_fs_dict[fs_num].btn.set_texture_normal(btn_txr2) - if g_active_fs == g_fs_dict[fs_num]: - on_btn_fs(g_active_fs) - return 1 - elif g_fs_dict[fs_num].interfer == interfer: - update_fs(g_fs_dict[fs_num], float(interfer.options['powp']), float(freq), float(width)) - if g_active_fs == g_fs_dict[fs_num]: - on_btn_fs(g_active_fs) - return 1 - else: + var fs_item = null + var ecm_name = interfer.options.krp + if Interfers.INTERFER_NAMES.has(ecm_name): + if ecm_name == Interfers.IQ_FL_NAME: + var iq_fl_name = interfer.get_val('filename') + if not iq_fl_name in Interfers.INTERFER_NAMES[Interfers.IQ_FL_NAME]: fs_of_old(interfer) - return 3 - else: - fs_of_old(interfer) - return 4 + return 2 else: fs_of_old(interfer) return 2 + if (freq == ''): + fs_of_old(interfer) + return 2 + if g_fs_dict.has(interfer.options['nmfs']): + fs_item = g_fs_dict[interfer.options['nmfs']] + else: + fs_of_old(interfer) + return 2 + if fs_item.isg == 1: + if fs_item.interfer == null: + fs_item.interfer = interfer + if (interfer.active_fs != fs_item) and (interfer.active_fs != null): + fs_off(interfer.active_fs) + interfer.active_fs = fs_item + fs_item.pow = float(interfer.options['powp']) + fs_item.freq = float(freq) + fs_item.width = float(width) + update_fs(fs_item, float(interfer.options['powp']), float(freq), float(width)) + fs_item.btn.set_texture_normal(btn_txr2) + if g_active_fs == fs_item: + on_btn_fs(g_active_fs) + return 1 + elif fs_item.interfer == interfer: + update_fs(fs_item, float(interfer.options['powp']), float(freq), float(width)) + if g_active_fs == fs_item: + on_btn_fs(g_active_fs) + return 1 + else: + fs_of_old(interfer) + return 3 + else: + fs_of_old(interfer) + return 4 func fs_of_old(interfer): diff --git a/interfers.gd b/interfers.gd index 7fd3acf..748cfab 100644 --- a/interfers.gd +++ b/interfers.gd @@ -14,13 +14,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 -const TABLE_HEADERS = [ 'Индекс', 'Состояние', 'Помеха', 'Мощность', 'Кур. уг.', 'Частота', 'Ш. диап.'] -const TABLE_HEADER_TYPES = [ 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] -const TABLE_ROW_TYPES = [ TableCellType1, TableCellType6, TableCellType1, TableCellType1, TableCellType1, TableCellType1, TableCellType1] -const TABLE_ROW_ALIGNMENTS = [ 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, 150, 82, 100, 82, 90, 150] +# Индекс колонки: 0 1 2 3 4 5 6 7 +const TABLE_HEADERS = [ 'Индекс', 'Состояние', 'Помеха', 'Мощность', 'Кур. уг.', 'Частота', 'Ш. диап.', 'Номер ФС'] +const TABLE_HEADER_TYPES = [ 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] +const TABLE_ROW_TYPES = [ TableCellType1, TableCellType6, TableCellType1, TableCellType1, TableCellType1, TableCellType1, TableCellType1, TableCellType1] +const TABLE_ROW_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] +const TABLE_COLUMN_SIZES = [ 82, 130, 100, 82, 82, 82, 82, 82] const COLUMN_ISPP = 0 # Индекс сейанса постановки помехи const COLUMN_SVK = 1 # Состояние выполнения помехи @@ -29,7 +29,7 @@ const COLUMN_POWP = 3 # Мощность излучения const COLUMN_KNI = 4 # Курсовой угол const COLUMN_FREQ = 5 # Частота const COLUMN_WIDTH = 6 # Ширина диапазона - +const COLUMN_NUM_FS = 7 # Номер модуля фс # Индексы колонок, которым можно задавать выравнивание текста const TABLE_ALLIGNED_COLUMNS = [ @@ -38,7 +38,8 @@ const TABLE_ALLIGNED_COLUMNS = [ COLUMN_POWP, COLUMN_KNI, COLUMN_FREQ, - COLUMN_WIDTH, ] + COLUMN_WIDTH, + COLUMN_NUM_FS] # Состояние выполнения команды поставновки помехи const SVK = ['Подготовка', 'Выполнено', 'Ошибка', 'Занято', 'Неисправно'] @@ -46,10 +47,27 @@ const SVK = ['Подготовка', 'Выполнено', 'Ошибка', 'За # Номера колонок const COLUMN_OPT = [[COLUMN_SVK, SVK]] const COLUMN_OPT_BTN = [COLUMN_SVK] +const IQ_FL_NAME = 'IQ-файл' + +const INTERFER_NAMES: Dictionary = { + 'off' : null, + 'ПСП + ФМ-2' : null, + 'Линейная ЧМ' : null, + IQ_FL_NAME : ['SRNGPS.pcm', + 'MCHM1.pcm', + 'PDM2_20.pcm', + 'PDM4_20.pcm', + 'PDM4S_5.pcm', + 'FM_5.pcm', + 'K1.pcm', + 'OZP1.pcm', + 'SVI1_LIT2.pcm', + 'SVI1_LIT3.pcm', + 'SVM2_LIT2.pcm', + 'SVM2_LIT3.pcm',] } # Помеха class Interfer: - # параметры цели, второе значение, разрешение отправки. var get_data: Dictionary = { 'fpga_ver ': '', 'brd_ver': '', @@ -63,6 +81,7 @@ class Interfer: 'krp': '', 'powp': 0.0, 'kni': 0.0, + 'nmfs': 0, 'params': {}, 'get': [], } @@ -82,6 +101,7 @@ class Interfer: new_row.append(str(options['kni'])) new_row.append(get_val('freq')) new_row.append(get_val('width')) + new_row.append(str(options['nmfs'])) return new_row func get_val(val): @@ -92,7 +112,7 @@ class Interfer: func update_interfer(data: Dictionary): options.merge(data, true) - + options['nmfs'] = int(options['nmfs']) func set_interfer(data): if interfers.has(data['ispp']): diff --git a/main.tscn b/main.tscn index 2c53391..0620c93 100644 --- a/main.tscn +++ b/main.tscn @@ -25,9 +25,10 @@ self_modulate = Color(0, 0, 0, 1) layout_mode = 0 offset_right = 1594.0 offset_bottom = 897.0 -current_tab = 0 +current_tab = 1 [node name="threats" type="Panel" parent="ColorRect/tabs"] +visible = false self_modulate = Color(0, 0, 0, 1) light_mask = 2 layout_mode = 2 @@ -136,7 +137,6 @@ offset_bottom = 50.0 text = "100 целей" [node name="pomehi" type="Panel" parent="ColorRect/tabs"] -visible = false layout_mode = 2 metadata/_tab_index = 1