Рефактор
This commit is contained in:
@@ -15,11 +15,11 @@ const TABLE_COLUMN_SIZE = [ 370, 85 ] ## Ширины к
|
|||||||
const TABLE_PARAMS = {
|
const TABLE_PARAMS = {
|
||||||
'kni': [0, 'Курсовой угол, гр.', false, 0.0, 360.0],
|
'kni': [0, 'Курсовой угол, гр.', false, 0.0, 360.0],
|
||||||
'powp': [1, 'Мощность, %', true, 0.0, 100.0],
|
'powp': [1, 'Мощность, %', true, 0.0, 100.0],
|
||||||
'freq': [2, 'Частота, МГц', true, 400.0, 6000.0],
|
'freq': [2, 'Частота, МГц', true, settings.FREQ_MIN, settings.FREQ_MAX],
|
||||||
'width': [3, 'Занимая полоса частот, МГц', true, 0.0, 120.0],
|
'width': [3, 'Занимая полоса частот, МГц', true, 0.0, settings.WIDTH_MAX],
|
||||||
'dur': [4, 'Длительность импульса, мкс', true, 0.0, 1000000.0],
|
'dur': [4, 'Длительность импульса, мкс', true, 0.0, settings.DUR_MAX],
|
||||||
'period': [5, 'Период повтора, мкс', true, 0.0, 1000000.0],
|
'period': [5, 'Период повтора, мкс', true, 0.0, settings.PERIOD_MAX],
|
||||||
'um': [6, 'Угол места, гр.', true, -5.0, 55.0] }
|
'um': [6, 'Угол места, гр.', true, settings.UM_MIN, settings.UM_MAX] }
|
||||||
|
|
||||||
const MOD_ROW_INDEX = 7 ## Индекс строки с модуляцией
|
const MOD_ROW_INDEX = 7 ## Индекс строки с модуляцией
|
||||||
|
|
||||||
|
|||||||
@@ -298,8 +298,8 @@ func on_button_select(btn_this, btn_others) -> void:
|
|||||||
|
|
||||||
## Поведение радиокнопок в группе. Управляет состоянием кнопок в радиогруппе.
|
## Поведение радиокнопок в группе. Управляет состоянием кнопок в радиогруппе.
|
||||||
func on_button_pressed(btn_this, btn_others) -> void:
|
func on_button_pressed(btn_this, btn_others) -> void:
|
||||||
$vslider.set_value_no_signal(0)
|
$chk_auto.set_pressed_no_signal(false)
|
||||||
$vslider.on_value_changed(0)
|
on_value_changed(false)
|
||||||
var fs_arr: Array = []
|
var fs_arr: Array = []
|
||||||
for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other)
|
for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other)
|
||||||
var interfer_name: String = btn_this.get_meta('rfi_name')
|
var interfer_name: String = btn_this.get_meta('rfi_name')
|
||||||
|
|||||||
@@ -21,10 +21,6 @@ const ITERFER_MODE = {
|
|||||||
'k1': ['K1', ['freq', 'width', 'dur', 'period'], 50],
|
'k1': ['K1', ['freq', 'width', 'dur', 'period'], 50],
|
||||||
'ozp1': ['ОЗП-1', ['freq', 'width'], 51] }
|
'ozp1': ['ОЗП-1', ['freq', 'width'], 51] }
|
||||||
|
|
||||||
const FREQ_MAX = 6000
|
|
||||||
const FREQ_MIN = 400
|
|
||||||
const WIDTH_MAX = 120
|
|
||||||
const WIDTH_MIN = 0
|
|
||||||
|
|
||||||
const SOURCE_INTERFER = ['th','fs','cu']
|
const SOURCE_INTERFER = ['th','fs','cu']
|
||||||
const ID_INTERFERS_LEN = 63 ## Размер пула номеров целей.
|
const ID_INTERFERS_LEN = 63 ## Размер пула номеров целей.
|
||||||
@@ -44,7 +40,7 @@ class Interfer:
|
|||||||
var ispp: int = 0 ## Индекс сеанса.
|
var ispp: int = 0 ## Индекс сеанса.
|
||||||
var svk: = 0 ## Состояние сеанса. Ответ КАПСРПБ. Возможные значения в [param ITERFER_STATE].
|
var svk: = 0 ## Состояние сеанса. Ответ КАПСРПБ. Возможные значения в [param ITERFER_STATE].
|
||||||
var krp: String = '' ## Тип помехи. Возможные значения в [param INTERFER_MODE].
|
var krp: String = '' ## Тип помехи. Возможные значения в [param INTERFER_MODE].
|
||||||
var powp: float = 0.0 ## Мощность излучения выраженная в процентах.
|
var powp: float = 100.0 ## Мощность излучения выраженная в процентах.
|
||||||
var kni: = 0.0 ## Курсовой угол направления излучения.
|
var kni: = 0.0 ## Курсовой угол направления излучения.
|
||||||
var params: = {} ## Параметры помехи.
|
var params: = {} ## Параметры помехи.
|
||||||
var get_params: Array[String] ## Запрос массива параметров (список запрошенных параметров).
|
var get_params: Array[String] ## Запрос массива параметров (список запрошенных параметров).
|
||||||
@@ -57,7 +53,7 @@ class Interfer:
|
|||||||
func _to_string() -> String:
|
func _to_string() -> String:
|
||||||
return 'номер: %d название: %s частота: %0.1f МГц пеленг: %0.1f гр.' % [ispp, ITERFER_MODE[krp][0], params['freq'], kni]
|
return 'номер: %d название: %s частота: %0.1f МГц пеленг: %0.1f гр.' % [ispp, ITERFER_MODE[krp][0], params['freq'], kni]
|
||||||
|
|
||||||
func get_msg6_data():
|
func get_msg6_data() -> PackedByteArray:
|
||||||
var data_to_json : Dictionary = {}
|
var data_to_json : Dictionary = {}
|
||||||
data_to_json['ts'] = 6
|
data_to_json['ts'] = 6
|
||||||
data_to_json['ss'] = ss
|
data_to_json['ss'] = ss
|
||||||
@@ -65,11 +61,10 @@ class Interfer:
|
|||||||
data_to_json['krp'] = krp
|
data_to_json['krp'] = krp
|
||||||
if krp != INTERFER_OFF:
|
if krp != INTERFER_OFF:
|
||||||
data_to_json['kni'] = kni
|
data_to_json['kni'] = kni
|
||||||
data_to_json['powp'] = powp # Необходимо добавить управление мощностью
|
data_to_json['powp'] = powp # TODO: Необходимо добавить управление мощностью
|
||||||
data_to_json['get'] = []
|
data_to_json['get'] = []
|
||||||
data_to_json['params'] = params
|
data_to_json['params'] = params
|
||||||
var json = JSON.stringify(data_to_json)
|
var pac = JSON.stringify(data_to_json).to_utf8_buffer()
|
||||||
var pac = json.to_utf8_buffer()
|
|
||||||
return pac
|
return pac
|
||||||
|
|
||||||
func set_from_dic(dic: Dictionary):
|
func set_from_dic(dic: Dictionary):
|
||||||
@@ -198,10 +193,10 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, _unit, ecms):
|
|||||||
var id = item.id
|
var id = item.id
|
||||||
param['freq'] = item.freq
|
param['freq'] = item.freq
|
||||||
param['width'] = item.width
|
param['width'] = item.width
|
||||||
if (param['width'] < WIDTH_MIN):
|
if (param['width'] < settings.WIDTH_MIN):
|
||||||
param['width'] = WIDTH_MIN
|
param['width'] = settings.WIDTH_MIN
|
||||||
elif (param['width'] > WIDTH_MAX):
|
elif (param['width'] > settings.WIDTH_MAX):
|
||||||
param['width'] = WIDTH_MAX
|
param['width'] = settings.WIDTH_MAX
|
||||||
interfer_create(interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0])
|
interfer_create(interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0])
|
||||||
|
|
||||||
for item in fs_arr:
|
for item in fs_arr:
|
||||||
@@ -219,17 +214,17 @@ func on_interfer_rcv(interfer_params: Array, unit, ecms):
|
|||||||
var id = interfer_params[1]
|
var id = interfer_params[1]
|
||||||
var aoa = interfer_params[2]
|
var aoa = interfer_params[2]
|
||||||
var um = interfer_params[3]
|
var um = interfer_params[3]
|
||||||
if (aoa < 0) and (aoa > 360):
|
if (aoa < 0.0) and (aoa > 360.0):
|
||||||
err = true
|
err = true
|
||||||
var param: Dictionary = {}
|
var param: Dictionary = {}
|
||||||
if (um < -5) and (um > 55):
|
if (um < -settings.UM_MIN) and (um > settings.UM_MAX):
|
||||||
err = true
|
err = true
|
||||||
param['um'] = um
|
param['um'] = um
|
||||||
param['freq'] = interfer_params[4]
|
param['freq'] = interfer_params[4]
|
||||||
if (param['freq'] < FREQ_MIN) and (param['freq'] > FREQ_MAX):
|
if (param['freq'] < settings.FREQ_MIN) and (param['freq'] > settings.FREQ_MAX):
|
||||||
err = true
|
err = true
|
||||||
param['width'] = interfer_params[5]
|
param['width'] = interfer_params[5]
|
||||||
if (param['width'] < WIDTH_MIN) and (param['width'] > WIDTH_MAX):
|
if (param['width'] < settings.WIDTH_MIN) and (param['width'] > settings.WIDTH_MAX):
|
||||||
err = true
|
err = true
|
||||||
var interfer_name: String
|
var interfer_name: String
|
||||||
for key in ITERFER_MODE:
|
for key in ITERFER_MODE:
|
||||||
@@ -256,8 +251,10 @@ func interfer_create(interfer_name, ecms, param, kni, id, dict, source_interfer)
|
|||||||
if interfer_name == 'off':
|
if interfer_name == 'off':
|
||||||
return
|
return
|
||||||
ispp = pop_id()
|
ispp = pop_id()
|
||||||
if ispp == 0: return
|
if ispp == 0:
|
||||||
else: ispp = id
|
return
|
||||||
|
else:
|
||||||
|
ispp = id
|
||||||
dict[ispp] = id
|
dict[ispp] = id
|
||||||
msg_ss += 1
|
msg_ss += 1
|
||||||
var ecm: Interfer
|
var ecm: Interfer
|
||||||
@@ -305,7 +302,7 @@ func on_threats_lost(th, ecms, unit):
|
|||||||
var ecm = ecms[ecm_id]
|
var ecm = ecms[ecm_id]
|
||||||
ecm.krp = INTERFER_OFF
|
ecm.krp = INTERFER_OFF
|
||||||
send_ecm(ecm, unit)
|
send_ecm(ecm, unit)
|
||||||
signaller.emit_signal('interfer_off',ecm, ecms, thrs)
|
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
|
||||||
|
|
||||||
|
|
||||||
func pop_id() -> int:
|
func pop_id() -> int:
|
||||||
|
|||||||
@@ -43,6 +43,16 @@ var settings_program: Dictionary
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const FREQ_MAX: = 6000.0
|
||||||
|
const FREQ_MIN: = 400.0
|
||||||
|
const WIDTH_MAX: = 120.0
|
||||||
|
const WIDTH_MIN: = 0.0
|
||||||
|
const DUR_MAX: = 1000000.0
|
||||||
|
const PERIOD_MAX: = 1000000.0
|
||||||
|
const UM_MIN: = -5.0
|
||||||
|
const UM_MAX: = 55.0
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var file = FileAccess.open(settings_file, FileAccess.READ)
|
var file = FileAccess.open(settings_file, FileAccess.READ)
|
||||||
if not file:
|
if not file:
|
||||||
@@ -85,7 +95,6 @@ func _ready() -> void:
|
|||||||
UnitProfiles[key][2] = temp_array[1]
|
UnitProfiles[key][2] = temp_array[1]
|
||||||
else:
|
else:
|
||||||
log.info('Не удалось прочитать ключ %s из файла настроек, использованы настройики по умолчанию' % key)
|
log.info('Не удалось прочитать ключ %s из файла настроек, использованы настройики по умолчанию' % key)
|
||||||
|
|
||||||
log.info('Модуль настроек готов')
|
log.info('Модуль настроек готов')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ shader_type canvas_item;
|
|||||||
global uniform int tick_curent;
|
global uniform int tick_curent;
|
||||||
|
|
||||||
/* Закрашенная окружность */
|
/* Закрашенная окружность */
|
||||||
instance uniform int tick_update = 1000; /* Время последнего обновления, мс */
|
instance uniform int tick_update = 0; /* Время последнего обновления, мс */
|
||||||
instance uniform vec4 color: source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
instance uniform vec4 color: source_color = vec4(1.0, 1.0, 1.0, 1.0); /* Собственный цвет */
|
||||||
uniform int tick_delta = 200; /* Время вспышки при обновлении, мc */
|
instance uniform float radius = 0.060; /* Радиус, относительная величина */
|
||||||
uniform float radius = 0.060; /* Радиус */
|
uniform int tick_delta = 200; /* Длительность вспышки при обновлении, мc */
|
||||||
const float ds = 0.010; /* Относительное расстояние на котором выполняется сглаживание краёв */
|
const float ds = 0.010; /* Расстояние на котором выполняется сглаживание краёв, относительная величина */
|
||||||
const vec2 center = vec2(0.125, 0.125); /* Центр должен быть в (0.5, 0.5), но это не так */
|
const vec2 center = vec2(0.125, 0.125); /* Центр, должен быть в (0.5, 0.5) */
|
||||||
|
|
||||||
|
|
||||||
void fragment()
|
void fragment()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ shader_type canvas_item;
|
|||||||
|
|
||||||
/* Рисует текстуру по маске в форме окружности */
|
/* Рисует текстуру по маске в форме окружности */
|
||||||
|
|
||||||
uniform float radius: hint_range(0.0, 1.0) = 0.39; /* Радиус */
|
instance uniform float radius: hint_range(0.0, 1.0) = 0.39; /* Радиус */
|
||||||
const vec2 center = vec2(0.5, 0.5);
|
const vec2 center = vec2(0.5, 0.5);
|
||||||
|
|
||||||
void fragment()
|
void fragment()
|
||||||
|
|||||||
Reference in New Issue
Block a user