diff --git a/scenes/frame-ecm-params/scroll-ecm-params.gd b/scenes/frame-ecm-params/scroll-ecm-params.gd index 0245a76..43c32c6 100644 --- a/scenes/frame-ecm-params/scroll-ecm-params.gd +++ b/scenes/frame-ecm-params/scroll-ecm-params.gd @@ -18,9 +18,10 @@ const TABLE_PARAMS = { '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] } + 'period': [5, 'Период повтора, мкс', true, 0.0, 1000000.0], + 'um': [6, 'Угол места, гр.', true, -5.0, 55.0] } -const MOD_ROW_INDEX = 6 ## Индекс строки с модуляцией +const MOD_ROW_INDEX = 7 ## Индекс строки с модуляцией func init_table(): for i in TABLE_PARAMS.size(): $table.add_row(TABLE_ROW) @@ -37,15 +38,15 @@ func init_table(): $table.set_node_text(0, MOD_ROW_INDEX, 'Подавление') $table.set_node_alligment(0, MOD_ROW_INDEX, HORIZONTAL_ALIGNMENT_LEFT) $table.set_node_editable(0, MOD_ROW_INDEX, false) - var taggle_node = $table.get_node2(1, MOD_ROW_INDEX) - var taggle_btn = taggle_node.get_children()[1] - taggle_btn.connect('pressed', on_taggle_btn.bind(taggle_btn)) - taggle_btn.disabled = true + var toggle_node = $table.get_node2(1, MOD_ROW_INDEX) + var toggle_btn = toggle_node.get_children()[1] + toggle_btn.connect('pressed', on_toggle_btn.bind(toggle_btn)) + toggle_btn.disabled = true $table.set_columns_min_size(TABLE_COLUMN_SIZE) $table.set_meta('id', 0) - signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected').bind(taggle_btn)) + signaller.connect('interfer_selected', Callable(self, 'on_interfer_selected').bind(toggle_btn)) signaller.connect('rto_threat_unsel', Callable(self, 'on_rto_threat_unsel')) - signaller.connect('emit_changed', Callable(self, 'on_emit_changed').bind(taggle_btn)) + signaller.connect('emit_changed', Callable(self, 'on_emit_changed').bind(toggle_btn)) ## Called when the node enters the scene tree for the first time. @@ -74,18 +75,18 @@ func check_value(val, min_val, max_val, old_val): else: return old_val -func on_interfer_selected(ecm, taggle_btn): +func on_interfer_selected(ecm, toggle_btn): if ecm != null: $table.set_meta('ecm', ecm) - taggle_btn.disabled = false + toggle_btn.disabled = false else: $table.set_meta('ecm', null) - taggle_btn.disabled = true - taggle_btn.button_pressed = false - on_ecm_update(taggle_btn) + toggle_btn.disabled = true + toggle_btn.button_pressed = false + on_ecm_update(toggle_btn) -func on_ecm_update(taggle_btn): +func on_ecm_update(toggle_btn): for item in len(TABLE_PARAMS): $table.set_node_text(1, item, '') $table.set_node_editable(1, item, false) @@ -100,7 +101,7 @@ func on_ecm_update(taggle_btn): var val = ecm.get_value(member_name) $table.set_node_text(1, p[0], '%s' % val) $table.set_node_editable(1, p[0], p[2]) - taggle_btn.button_pressed = ecm.modulation + toggle_btn.button_pressed = ecm.modulation @@ -110,12 +111,12 @@ func on_rto_threat_unsel(_th_id): $table.set_node_editable(1, item, false) -func on_taggle_btn(taggle_btn): +func on_toggle_btn(toggle_btn): if not $table.has_meta('ecm'): return var ecm: interfer.Interfer = $table.get_meta('ecm') - ecm.modulation = taggle_btn.button_pressed + ecm.modulation = toggle_btn.button_pressed -func on_emit_changed(state, taggle_btn): - if not taggle_btn.disabled: - taggle_btn.button_pressed = state +func on_emit_changed(state, toggle_btn): + if not toggle_btn.disabled: + toggle_btn.button_pressed = state diff --git a/scripts/interfer.gd b/scripts/interfer.gd index b6814fd..b99bd21 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -10,7 +10,7 @@ const ITERFER_MODE = { 'srnm2': ['СРН-М2', ['freq', 'width'], 2], 'srngps': ['СРН-GPS', ['freq', 'width'], 3], 'lchm1': ['ЛЧМ-1', ['freq', 'width'], 10], - 'lchm2': ['ЛЧМ-2', ['freq', 'width'], 4], + 'lchm2': ['ЛЧМ-2', ['freq', 'width'], 16], 'mchm1': ['МЧМ-1', ['freq', 'width'], 11], 'pdm2': ['ПД-М2', ['freq', 'width'], 12], 'pdm4': ['ПД-М4', ['freq', 'width'], 13], @@ -214,9 +214,13 @@ func on_interfer_rcv(interfer_params: Array, unit, ecms): var mode = interfer_params[0] var id = interfer_params[1] var aoa = interfer_params[2] + var um = interfer_params[3] if (aoa < 0) and (aoa > 360): err = true var param: Dictionary = {} + if (um < -5) and (um > 55): + err = true + param['um'] = um param['freq'] = interfer_params[4] if (param['freq'] < FREQ_MIN) and (param['freq'] > FREQ_MAX): err = true @@ -267,7 +271,10 @@ func interfer_create(interfer_name, ecms, param, kni, id, dict, source_interfer) ecm.powp = 100.0 ecm.source_interfer = source_interfer ecm.modulation = emit_enable - ecm.um = 15.0 # Значение по умолчанию + if param.has('um'): + ecm.um = param['um'] + else: + ecm.um = 15.0 # Значение по умолчанию signaller.emit_signal('interfer_new', ecm) if interfer_name == 'off': signaller.emit_signal('interfer_off', ecm, ecms, thrs) diff --git a/scripts/tcp5p28.gd b/scripts/tcp5p28.gd index 865ecb3..4cb5c9c 100644 --- a/scripts/tcp5p28.gd +++ b/scripts/tcp5p28.gd @@ -45,6 +45,11 @@ class TCP5P28 extends unit.Unit: signal get_interfers(unit: TCP5P28) ## Запрос состояния выполнения целеуказания. var tx_stack: Array ## Массив пакетов для отправки. + var ext_cu = false + func _init(nm) -> void: + super._init(nm) + ext_cu = ProjectSettings.get_setting('application/config/external_cu', false) + ProjectSettings.connect('settings_changed', on_setting_changed) func _to_string() -> String: return String('5П-28: "%s" %s ' % [self.name, ['отключен', 'на связи'][int(online)]]) @@ -60,8 +65,7 @@ class TCP5P28 extends unit.Unit: emit_signal('get_threats') if cmd_type == CMD_TYPE_STATE: emit_signal('get_interfers') - var external_cu = ProjectSettings.get_setting('application/config/external_cu', false) - if cmd_type == CMD_TYPE_IN and external_cu: + if cmd_type == CMD_TYPE_IN and ext_cu: set_interfer(data) func process(tick: int): @@ -181,3 +185,6 @@ class TCP5P28 extends unit.Unit: var data_to_send: PackedByteArray = create_header(data_len) data_to_send.append_array(data_tx) tx_stack.append(data_to_send) + + func on_setting_changed(): + ext_cu = ProjectSettings.get_setting('application/config/external_cu', false)