diff --git a/scenes/frame-ecm-params/scroll-ecm-params.gd b/scenes/frame-ecm-params/scroll-ecm-params.gd index c811e7c9..5fa0c1ea 100644 --- a/scenes/frame-ecm-params/scroll-ecm-params.gd +++ b/scenes/frame-ecm-params/scroll-ecm-params.gd @@ -15,11 +15,11 @@ const TABLE_COLUMN_SIZE = [ 370, 85 ] ## Ширины к const TABLE_PARAMS = { 'kni': [0, 'Курсовой угол, гр.', false, 0.0, 360.0], 'powp': [1, 'Мощность, %', true, 0.0, 100.0], - 'freq': [2, 'Частота, МГц', true, 400.0, 6000.0], - 'width': [3, 'Занимая полоса частот, МГц', true, 0.0, 120.0], - 'dur': [4, 'Длительность импульса, мкс', true, 0.0, 1000000.0], - 'period': [5, 'Период повтора, мкс', true, 0.0, 1000000.0], - 'um': [6, 'Угол места, гр.', true, -5.0, 55.0] } + 'freq': [2, 'Частота, МГц', true, settings.FREQ_MIN, settings.FREQ_MAX], + 'width': [3, 'Занимая полоса частот, МГц', true, 0.0, settings.WIDTH_MAX], + 'dur': [4, 'Длительность импульса, мкс', true, 0.0, settings.DUR_MAX], + 'period': [5, 'Период повтора, мкс', true, 0.0, settings.PERIOD_MAX], + 'um': [6, 'Угол места, гр.', true, settings.UM_MIN, settings.UM_MAX] } const MOD_ROW_INDEX = 7 ## Индекс строки с модуляцией diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 6a6efbe0..1ebab63b 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -298,8 +298,8 @@ func on_button_select(btn_this, btn_others) -> void: ## Поведение радиокнопок в группе. Управляет состоянием кнопок в радиогруппе. func on_button_pressed(btn_this, btn_others) -> void: - $vslider.set_value_no_signal(0) - $vslider.on_value_changed(0) + $chk_auto.set_pressed_no_signal(false) + on_value_changed(false) var fs_arr: Array = [] for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other) var interfer_name: String = btn_this.get_meta('rfi_name') diff --git a/scripts/interfer.gd b/scripts/interfer.gd index e25965db..5486bb1c 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -21,10 +21,6 @@ const ITERFER_MODE = { 'k1': ['K1', ['freq', 'width', 'dur', 'period'], 50], '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 ID_INTERFERS_LEN = 63 ## Размер пула номеров целей. @@ -44,7 +40,7 @@ class Interfer: var ispp: int = 0 ## Индекс сеанса. var svk: = 0 ## Состояние сеанса. Ответ КАПСРПБ. Возможные значения в [param ITERFER_STATE]. var krp: String = '' ## Тип помехи. Возможные значения в [param INTERFER_MODE]. - var powp: float = 0.0 ## Мощность излучения выраженная в процентах. + var powp: float = 100.0 ## Мощность излучения выраженная в процентах. var kni: = 0.0 ## Курсовой угол направления излучения. var params: = {} ## Параметры помехи. var get_params: Array[String] ## Запрос массива параметров (список запрошенных параметров). @@ -57,7 +53,7 @@ class Interfer: func _to_string() -> String: 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 = {} data_to_json['ts'] = 6 data_to_json['ss'] = ss @@ -65,11 +61,10 @@ class Interfer: data_to_json['krp'] = krp if krp != INTERFER_OFF: data_to_json['kni'] = kni - data_to_json['powp'] = powp # Необходимо добавить управление мощностью + data_to_json['powp'] = powp # TODO: Необходимо добавить управление мощностью data_to_json['get'] = [] data_to_json['params'] = params - var json = JSON.stringify(data_to_json) - var pac = json.to_utf8_buffer() + var pac = JSON.stringify(data_to_json).to_utf8_buffer() return pac 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 param['freq'] = item.freq param['width'] = item.width - if (param['width'] < WIDTH_MIN): - param['width'] = WIDTH_MIN - elif (param['width'] > WIDTH_MAX): - param['width'] = WIDTH_MAX + if (param['width'] < settings.WIDTH_MIN): + param['width'] = settings.WIDTH_MIN + elif (param['width'] > settings.WIDTH_MAX): + param['width'] = settings.WIDTH_MAX interfer_create(interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0]) for item in fs_arr: @@ -219,17 +214,17 @@ func on_interfer_rcv(interfer_params: Array, unit, ecms): var id = interfer_params[1] var aoa = interfer_params[2] var um = interfer_params[3] - if (aoa < 0) and (aoa > 360): + if (aoa < 0.0) and (aoa > 360.0): err = true var param: Dictionary = {} - if (um < -5) and (um > 55): + if (um < -settings.UM_MIN) and (um > settings.UM_MAX): err = true param['um'] = um 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 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 var interfer_name: String 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': return ispp = pop_id() - if ispp == 0: return - else: ispp = id + if ispp == 0: + return + else: + ispp = id dict[ispp] = id msg_ss += 1 var ecm: Interfer @@ -305,7 +302,7 @@ func on_threats_lost(th, ecms, unit): var ecm = ecms[ecm_id] ecm.krp = INTERFER_OFF send_ecm(ecm, unit) - signaller.emit_signal('interfer_off',ecm, ecms, thrs) + signaller.emit_signal('interfer_off', ecm, ecms, thrs) func pop_id() -> int: diff --git a/scripts/settings.gd b/scripts/settings.gd index 36604dd8..afb60102 100644 --- a/scripts/settings.gd +++ b/scripts/settings.gd @@ -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: var file = FileAccess.open(settings_file, FileAccess.READ) if not file: @@ -85,7 +95,6 @@ func _ready() -> void: UnitProfiles[key][2] = temp_array[1] else: log.info('Не удалось прочитать ключ %s из файла настроек, использованы настройики по умолчанию' % key) - log.info('Модуль настроек готов') diff --git a/shaders/bip.gdshader b/shaders/bip.gdshader index 3895d74a..07d86ca6 100644 --- a/shaders/bip.gdshader +++ b/shaders/bip.gdshader @@ -5,12 +5,12 @@ shader_type canvas_item; global uniform int tick_curent; /* Закрашенная окружность */ -instance uniform int tick_update = 1000; /* Время последнего обновления, мс */ -instance uniform vec4 color: source_color = vec4(1.0, 1.0, 1.0, 1.0); -uniform int tick_delta = 200; /* Время вспышки при обновлении, мc */ -uniform float radius = 0.060; /* Радиус */ -const float ds = 0.010; /* Относительное расстояние на котором выполняется сглаживание краёв */ -const vec2 center = vec2(0.125, 0.125); /* Центр должен быть в (0.5, 0.5), но это не так */ +instance uniform int tick_update = 0; /* Время последнего обновления, мс */ +instance uniform vec4 color: source_color = vec4(1.0, 1.0, 1.0, 1.0); /* Собственный цвет */ +instance uniform float radius = 0.060; /* Радиус, относительная величина */ +uniform int tick_delta = 200; /* Длительность вспышки при обновлении, мc */ +const float ds = 0.010; /* Расстояние на котором выполняется сглаживание краёв, относительная величина */ +const vec2 center = vec2(0.125, 0.125); /* Центр, должен быть в (0.5, 0.5) */ void fragment() diff --git a/shaders/tilemap.gdshader b/shaders/tilemap.gdshader index 6bc52bd4..2c751165 100644 --- a/shaders/tilemap.gdshader +++ b/shaders/tilemap.gdshader @@ -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); void fragment() diff --git a/table/empti.tscn b/table/empty.tscn similarity index 100% rename from table/empti.tscn rename to table/empty.tscn