Compare commits
9 Commits
be156c1fde
...
ec1213c5f9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec1213c5f9 | ||
|
|
cb4c3eceaf | ||
|
|
78fcb79e00 | ||
|
|
6199c895fa | ||
|
|
24d89aaabb | ||
|
|
90b2858fc6 | ||
|
|
25c48c0b61 | ||
|
|
b6f63453f0 | ||
|
|
a03c297252 |
52
interfers.gd
52
interfers.gd
@@ -1,11 +1,5 @@
|
||||
extends Node
|
||||
|
||||
var id_array: Array # Массив id целей
|
||||
var interfers : Dictionary # Словарь целей
|
||||
var msg_counter : int = 0 # Счётчик отправленных пакетов
|
||||
var g_table # таблица с помехами
|
||||
|
||||
|
||||
const TableCellType1 = preload('res://ячейка-1.tscn')
|
||||
const TableCellType2 = preload('res://кнопка-3.tscn')
|
||||
const TableCellType3 = preload('res://кнопка-4.tscn')
|
||||
@@ -57,8 +51,21 @@ const INTERFER_NAMES: Dictionary = {
|
||||
IQ_FL_NAME : ['SRNGPS.pcm',
|
||||
'MCHM1.pcm',
|
||||
'PDM2_20.pcm',
|
||||
'PDM2_40.pcm',
|
||||
'PDM2_88.pcm',
|
||||
'PDM2_112.pcm',
|
||||
'PDM4_20.pcm',
|
||||
'PDM4_40.pcm',
|
||||
'PDM4_84.pcm',
|
||||
'PDM4_108.pcm',
|
||||
'PDM4S_5.pcm',
|
||||
'PDM4S_10.pcm',
|
||||
'PDM4S_2_5.pcm',
|
||||
'PDM4S_10.pcm',
|
||||
'PDCHM_5.pcm',
|
||||
'PDCHM_10.pcm',
|
||||
'PDCHM_20.pcm',
|
||||
'PDCHM_40.pcm',
|
||||
'FM_5.pcm',
|
||||
'K1.pcm',
|
||||
'OZP1.pcm',
|
||||
@@ -66,10 +73,18 @@ const INTERFER_NAMES: Dictionary = {
|
||||
'SVI1_LIT3.pcm',
|
||||
'SVM2_LIT2.pcm',
|
||||
'SVM2_LIT3.pcm',
|
||||
'ERLS.pcm',
|
||||
'ELRS.pcm',
|
||||
'SRNI1_LIT4.pcm',
|
||||
'SRNI1_LIT5.pcm'] }
|
||||
|
||||
const INTERFER_OFF_TIMEOUT = 5.0 # Интервал выключения помехи
|
||||
|
||||
var id_array: Array # Массив id целей
|
||||
var interfers : Dictionary # Словарь целей
|
||||
var msg_counter : int = 0 # Счётчик отправленных пакетов
|
||||
var g_table # таблица с помехами
|
||||
var now = 0.0 # Время с момента запуска приложения
|
||||
|
||||
# Помеха
|
||||
class Interfer:
|
||||
var get_data: Dictionary = {
|
||||
@@ -92,6 +107,7 @@ class Interfer:
|
||||
var svk: int = 0
|
||||
var row_id: int
|
||||
var active_fs: fs.Fs
|
||||
var rx_tick: = 0
|
||||
|
||||
func _init(data: Dictionary):
|
||||
options.merge(data, true)
|
||||
@@ -129,6 +145,7 @@ func set_interfer(data):
|
||||
on_row_add(g_table, interfers[data['ispp']])
|
||||
var cmd_state: int = fs.set_fs(interfers[data['ispp']])
|
||||
interfers[data['ispp']].svk = cmd_state
|
||||
interfers[data['ispp']].rx_tick = now;
|
||||
var cell = g_table.get_node2(COLUMN_SVK, interfers[data['ispp']].row_id)
|
||||
cell.select(cmd_state)
|
||||
|
||||
@@ -208,14 +225,14 @@ func on_row_pressed(i_row: int, table):
|
||||
pass
|
||||
|
||||
|
||||
func off_interfer(json_data):
|
||||
if not interfers.has(json_data['ispp']): return
|
||||
var row_id = interfers[json_data['ispp']].row_id
|
||||
if interfers[json_data['ispp']] != null:
|
||||
if interfers[json_data['ispp']].active_fs != null:
|
||||
fs.fs_off(interfers[json_data['ispp']].active_fs)
|
||||
func off_interfer(interfer_id):
|
||||
if not interfers.has(interfer_id): return
|
||||
var row_id = interfers[interfer_id].row_id
|
||||
if interfers[interfer_id] != null:
|
||||
if interfers[interfer_id].active_fs != null:
|
||||
fs.fs_off(interfers[interfer_id].active_fs)
|
||||
if g_table.get_rows_count() > row_id:
|
||||
interfers.erase(json_data['ispp'])
|
||||
interfers.erase(interfer_id)
|
||||
g_table.remove_row(row_id)
|
||||
for i in g_table.get_rows_count():
|
||||
var interfer = g_table.get_node_user_data(0, i)
|
||||
@@ -232,3 +249,10 @@ func check_interfers_state():
|
||||
interfer.svk = cmd_state
|
||||
var cell = g_table.get_node2(COLUMN_SVK, interfer.row_id)
|
||||
cell.select(cmd_state)
|
||||
|
||||
|
||||
func _process(delta):
|
||||
now += delta
|
||||
for key in interfers:
|
||||
if (now - interfers[key].rx_tick) > INTERFER_OFF_TIMEOUT:
|
||||
off_interfer(key)
|
||||
|
||||
6
main.gd
6
main.gd
@@ -35,7 +35,7 @@ func _ready():
|
||||
'panel': panel_threats}
|
||||
sock.bind(main_addr[1], main_addr[0])
|
||||
sock.set_dest_address(dst_addr[0], dst_addr[1])
|
||||
Threats.init_treats(table_threats, nodes)
|
||||
Threats.init_threats(table_threats, nodes)
|
||||
Interfers.init_pomehi(table_pomehi)
|
||||
fs.init_fs($ColorRect/tabs/pomehi, $ColorRect/tabs/pomehi/fs_rect)
|
||||
var timer = Timer.new()
|
||||
@@ -64,7 +64,7 @@ func on_receive(data):
|
||||
if not json_data.has('ss'): return
|
||||
if not ((json_data['ss'] is int) or (json_data['ss'] is float)): return
|
||||
if json_data['krp'] == 'off':
|
||||
Interfers.off_interfer(json_data)
|
||||
Interfers.off_interfer(json_data['ispp'])
|
||||
sock.put_packet(Interfers.get_msg7_data())
|
||||
return
|
||||
if not json_data.has('powp'): return
|
||||
@@ -75,6 +75,8 @@ func on_receive(data):
|
||||
sock.put_packet(Interfers.get_msg7_data())
|
||||
elif json_data['ts'] == 8:
|
||||
fs.on_receive_msg8(json_data)
|
||||
elif json_data['ts'] == 9:
|
||||
Threats.on_receive_msg9(json_data)
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
||||
@@ -28,7 +28,10 @@ fs="*res://fs.gd"
|
||||
|
||||
window/size/viewport_width=1700
|
||||
window/size/viewport_height=900
|
||||
window/stretch/mode="2d"
|
||||
window/size/window_width_override=800
|
||||
window/size/window_height_override=600
|
||||
window/stretch/mode="canvas_items"
|
||||
window/stretch/aspect="keep_width"
|
||||
|
||||
[gui]
|
||||
|
||||
|
||||
144
threats.gd
144
threats.gd
@@ -1,13 +1,5 @@
|
||||
extends Node
|
||||
|
||||
var id_array: Array # Массив id целей
|
||||
var treats : Dictionary # Словарь целей
|
||||
var msg_counter : int = 0 # Счётчик отправленных пакетов
|
||||
|
||||
var g_table: GridContainer
|
||||
|
||||
var send_flag = true
|
||||
|
||||
const TableCellType1 = preload('res://ячейка-1.tscn')
|
||||
const TableCellType2 = preload('res://кнопка-3.tscn')
|
||||
const TableCellType3 = preload('res://кнопка-4.tscn')
|
||||
@@ -16,13 +8,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 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]
|
||||
# Индекс колонки: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
||||
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, 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, HORIZONTAL_ALIGNMENT_CENTER]
|
||||
const TABLE_ROW_TYPES = [ TableCellType1, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6, TableCellType6, TableCellType5, TableCellType6, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType5, TableCellType6, 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, HORIZONTAL_ALIGNMENT_CENTER, HORIZONTAL_ALIGNMENT_CENTER]
|
||||
const TABLE_COLUMN_SIZES = [ 40, 70, 82, 82, 82, 90, 110, 150, 80, 130, 82, 82, 82, 82, 82, 82, 140, 82]
|
||||
|
||||
const COLUMN_ID = 0 # Идентификатор цели
|
||||
const COLUMN_AOA = 1 # Курсовой угол на источник сигнала, градусы
|
||||
@@ -41,6 +33,7 @@ const COLUMN_LAT = 13 # Текущие координаты, долгота
|
||||
const COLUMN_LON = 14 # Текущие координаты, широта в градусах
|
||||
const COLUMN_ALT = 15 # Текущая высота, метры
|
||||
const COLUMN_REC = 16 # Текущая высота, метры
|
||||
const COLUMN_FLIC = 17 # Время мерцания
|
||||
|
||||
# Индексы колонок, которым можно задавать выравнивание текста
|
||||
const TABLE_ALLIGNED_COLUMNS = [
|
||||
@@ -56,7 +49,8 @@ const TABLE_ALLIGNED_COLUMNS = [
|
||||
COLUMN_SALT,
|
||||
COLUMN_LAT,
|
||||
COLUMN_LON,
|
||||
COLUMN_ALT ]
|
||||
COLUMN_ALT,
|
||||
COLUMN_FLIC ]
|
||||
|
||||
# Индексы колонок, в которых можно вводит текст
|
||||
const TABLE_ENTRY_COLUMNS = [
|
||||
@@ -71,7 +65,8 @@ const TABLE_ENTRY_COLUMNS = [
|
||||
COLUMN_SALT,
|
||||
COLUMN_LAT,
|
||||
COLUMN_LON,
|
||||
COLUMN_ALT ]
|
||||
COLUMN_ALT,
|
||||
COLUMN_FLIC ]
|
||||
|
||||
# Типы модуляции
|
||||
const MODE_TYPES = ['<неопр.>', 'am', 'ook', 'ask', 'fm', 'qpsk', 'oqpsk', 'pi4qpsk', 'qam16',
|
||||
@@ -84,38 +79,50 @@ const FREQM = ['<неопр.>', 'fhss', 'lfm', 'const']
|
||||
const M_PROTO = ['<неопр.>', '3dlink', 'skyhopperpro', 'picardiooem', 'solo7', 'j11',
|
||||
'mavlink', 'ltm', 'hc12', 'df1', ]
|
||||
|
||||
const COLUMN_OPT_BTN = [COLUMN_TMOD, COLUMN_FREQM, COLUMN_PROTO, COLUMN_REC]
|
||||
const ID_ARRAY_LEN = 150 # Размер пула номеров целей
|
||||
const MIN_FLIC_TIME = 1.0 # минимальное время мерцания цели
|
||||
|
||||
var id_array: Array # Массив id целей
|
||||
var threats : Dictionary # Словарь целей
|
||||
var msg_counter : int = 0 # Счётчик отправленных пакетов
|
||||
var g_table: GridContainer
|
||||
var send_flag = true
|
||||
var rkrp = []
|
||||
var now = 0.0 # Время с момента запуска приложения
|
||||
var bpo_mode: int = 1 # Режим работы блока БПО
|
||||
|
||||
# Номера колонок
|
||||
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 # Размер пула номеров целей
|
||||
|
||||
|
||||
# Цель
|
||||
class Threat:
|
||||
# параметры цели, второе значение, разрешение отправки.
|
||||
var row: Dictionary = {
|
||||
'id':[0,true],
|
||||
'aoa':[10.0,true],
|
||||
'freq':[2480.0,true],
|
||||
'width':[20.0,true],
|
||||
'power':[20.0,true],
|
||||
'tick':[10,true],
|
||||
'tmod':['<неопр.>',false],
|
||||
'freqm':['<неопр.>',false],
|
||||
'baud':[0.0,false],
|
||||
'rparams': [{},false],
|
||||
'rkrp': ['<неопр.>', false],
|
||||
'proto':['<неопр.>', false],
|
||||
'slon':[0.0,false],
|
||||
'slat':[0.0,false],
|
||||
'salt':[0.0,false],
|
||||
'lat':[0.0,false],
|
||||
'lon':[0.0,false],
|
||||
'alt':[0.0,false],
|
||||
'id': [0, true],
|
||||
'aoa': [10.0, true],
|
||||
'freq': [2480.0, true],
|
||||
'width': [20.0, true],
|
||||
'power': [20.0, true],
|
||||
'tick': [10, true],
|
||||
'tmod': ['<неопр.>', false],
|
||||
'freqm': ['<неопр.>', false],
|
||||
'baud': [0.0, false],
|
||||
'rparams': [{}, false],
|
||||
'rkrp': ['<неопр.>', false],
|
||||
'proto': ['<неопр.>', false],
|
||||
'slon': [0.0, false],
|
||||
'slat': [0.0, false],
|
||||
'salt': [0.0, false],
|
||||
'lat': [0.0, false],
|
||||
'lon': [0.0, false],
|
||||
'alt': [0.0, false],
|
||||
}
|
||||
var row_id: int
|
||||
var flic: Array = [0.0, false]
|
||||
var flic_ena: bool = true
|
||||
var flic_tick: = 0.0 ## Время изменения состояния flic
|
||||
|
||||
func _init(th_id : int, row_i: int):
|
||||
row.id[0] = th_id
|
||||
@@ -150,6 +157,7 @@ class Threat:
|
||||
new_rows.append(_check_value(row.lon))
|
||||
new_rows.append(_check_value(row.alt))
|
||||
new_rows.append(_check_value(row.rkrp))
|
||||
new_rows.append(_check_value(flic))
|
||||
return new_rows
|
||||
|
||||
|
||||
@@ -186,6 +194,16 @@ class Threat:
|
||||
row.width[1] = Tools.check_empty(value)
|
||||
return value
|
||||
|
||||
|
||||
func set_flic(val):
|
||||
var value = float(val)
|
||||
value = Tools.check_negative(value)
|
||||
value = Tools.check_len(val, value)
|
||||
flic[0] = value
|
||||
flic[1] = Tools.check_empty(value)
|
||||
return value
|
||||
|
||||
|
||||
func set_power(val):
|
||||
var value = float(val)
|
||||
value = Tools.check_negative(value)
|
||||
@@ -292,7 +310,7 @@ class Threat:
|
||||
return value
|
||||
|
||||
|
||||
func init_treats(table, nodes): # Инициализация вкладки с целями
|
||||
func init_threats(table, nodes): # Инициализация вкладки с целями
|
||||
set_rkrp()
|
||||
for i in range(ID_ARRAY_LEN): # Заполняет массив ID целей
|
||||
id_array.append(i+1)
|
||||
@@ -331,10 +349,11 @@ func load_treats(table):
|
||||
var id = int(item['id'])
|
||||
id_array.erase(int(id))
|
||||
var threat : = Threat.new(id, table.get_rows_count())
|
||||
treats['%d' % id] = threat
|
||||
threats['%d' % id] = threat
|
||||
for key in item:
|
||||
if key == 'id': threat.row[key] = [int(item[key]), true]
|
||||
elif key == 'tick': threat.row[key] = [int(item[key]), true]
|
||||
elif key == 'flic': threat.flic = [float(item[key]), true]
|
||||
else: threat.row[key] = [item[key], true]
|
||||
var row = threat.update_rows()
|
||||
table.add_row(TABLE_ROW_TYPES)
|
||||
@@ -348,9 +367,10 @@ func load_treats(table):
|
||||
func on_btn_save():
|
||||
var file = FileAccess.open('user://save.json', FileAccess.WRITE)
|
||||
var data_to_json : Array
|
||||
for key in treats:
|
||||
var treat = treats[key]
|
||||
for key in threats:
|
||||
var treat = threats[key]
|
||||
var data = treat.get_data()
|
||||
data['flic'] = threats[key].flic[0]
|
||||
data_to_json.append(data)
|
||||
var json = JSON.new().stringify(data_to_json)
|
||||
file.store_string(json)
|
||||
@@ -401,7 +421,7 @@ func on_edit_entry(text : String, entry):
|
||||
|
||||
|
||||
func set_value(val : String, treat_id : String, column : int):
|
||||
var treat = treats[treat_id]
|
||||
var treat = threats[treat_id]
|
||||
match column:
|
||||
COLUMN_AOA:
|
||||
return treat.set_aoa(val)
|
||||
@@ -435,6 +455,8 @@ func set_value(val : String, treat_id : String, column : int):
|
||||
return treat.set_alt_pressed(val)
|
||||
COLUMN_REC:
|
||||
return treat.set_rname(val)
|
||||
COLUMN_FLIC:
|
||||
return treat.set_flic(val)
|
||||
|
||||
func on_row_pressed(i_row: int, table):
|
||||
table.clear_rows_selected()
|
||||
@@ -444,7 +466,7 @@ func on_row_pressed(i_row: int, table):
|
||||
func on_btn_add(table):
|
||||
var id = pop_id()
|
||||
var threat : = Threat.new(id, table.get_rows_count())
|
||||
treats['%d' % id] = threat
|
||||
threats['%d' % id] = threat
|
||||
var row = threat.update_rows()
|
||||
table.add_row(TABLE_ROW_TYPES)
|
||||
table.set_row_text(table.get_rows_count()-1, row)
|
||||
@@ -459,7 +481,7 @@ func on_btn_del(table):
|
||||
table.get_selected_rows(row_i)
|
||||
if len(row_i) > 0:
|
||||
var cell = table.get_node2(0, row_i[0])
|
||||
treats.erase(cell.text)
|
||||
threats.erase(cell.text)
|
||||
table.remove_row(row_i[0])
|
||||
for i in table.get_rows_count():
|
||||
var treat = table.get_node_user_data(0, i)
|
||||
@@ -484,19 +506,20 @@ func get_threats_data():
|
||||
msg_counter += 1
|
||||
data_to_json['ss'] = msg_counter
|
||||
data_to_json['msvk'] = []
|
||||
data_to_json['sa'] = bpo_mode
|
||||
for item in Interfers.interfers.values():
|
||||
var msvk = {}
|
||||
msvk['ispp'] = item.options['ispp']
|
||||
msvk['svk'] = item.svk
|
||||
data_to_json['msvk'].append(msvk)
|
||||
data_to_json['mis'] = []
|
||||
for key in treats:
|
||||
var treat = treats[key]
|
||||
for key in threats:
|
||||
var threat = threats[key]
|
||||
var flag = int(key) % 2
|
||||
if int(send_flag) ^ flag:
|
||||
if (int(send_flag) ^ flag) or (not threat.flic_ena):
|
||||
continue
|
||||
set_ticks(treat)
|
||||
var data = treat.get_data()
|
||||
set_ticks(threat)
|
||||
var data = threat.get_data()
|
||||
data_to_json['mis'].append(data)
|
||||
var json = JSON.new().stringify(data_to_json)
|
||||
var pac = json.to_utf8_buffer()
|
||||
@@ -512,7 +535,7 @@ func set_ticks(treat):
|
||||
|
||||
func on_rotate_th(entry, table):
|
||||
if entry.text.is_valid_float():
|
||||
for th in treats.values():
|
||||
for th in threats.values():
|
||||
var aoa = th.row.aoa[0]
|
||||
aoa += float(entry.text)
|
||||
if aoa > 360.0:
|
||||
@@ -535,7 +558,7 @@ func on_timeout(entry, table, chkbx_rt):
|
||||
func on_btn_load(table):
|
||||
for i in table.get_rows_count():
|
||||
var cell = table.get_node2(0, 0)
|
||||
treats.erase(cell.text)
|
||||
threats.erase(cell.text)
|
||||
table.remove_row(0)
|
||||
load_treats(table)
|
||||
|
||||
@@ -545,7 +568,7 @@ func on_thr_gen(table):
|
||||
var id = pop_id()
|
||||
if id == 0: return
|
||||
var threat : = Threat.new(id, table.get_rows_count())
|
||||
treats['%d' % id] = threat
|
||||
threats['%d' % id] = threat
|
||||
threat.row.aoa[0] = 0 + 30 * i
|
||||
while (threat.row.aoa[0] > 360):
|
||||
threat.row.aoa[0] -= 360
|
||||
@@ -560,7 +583,24 @@ func on_thr_gen(table):
|
||||
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)
|
||||
|
||||
|
||||
func _process(delta):
|
||||
now += delta
|
||||
for th in threats.values():
|
||||
if th.flic[0] > MIN_FLIC_TIME:
|
||||
if (now - th.flic_tick) >= th.flic[0]:
|
||||
th.flic_ena = not th.flic_ena
|
||||
th.flic_tick = now
|
||||
else:
|
||||
th.flic_ena = true
|
||||
|
||||
|
||||
func on_receive_msg9(json_data):
|
||||
if not json_data.has('sa'): return
|
||||
bpo_mode = int(json_data['sa'])
|
||||
|
||||
Reference in New Issue
Block a user