Доработка. Управление модуляцией усилителей. Кнопка подавление определяет режим по умолчанию для всех помех.
This commit is contained in:
@@ -35,7 +35,8 @@ var id_array: Array ## Массив id воздействий.
|
||||
var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия.
|
||||
var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия.
|
||||
var cu: Dictionary ## Словарь воздействий для 5П-28, ключ - id воздействия.
|
||||
var auto_status: int = 0 # Статус скролла автомата
|
||||
var auto_status: int = 0 ## Статус скролла автомата
|
||||
var emit_enable: bool = true ## Разрешить излучение
|
||||
|
||||
## Сеанс помехи.
|
||||
class Interfer:
|
||||
@@ -117,7 +118,8 @@ func _ready():
|
||||
signaller.connect('interfer_off', Callable(self, 'on_interfer_off'))
|
||||
signaller.connect('manual_control', Callable(self, 'on_manual_control'))
|
||||
signaller.connect('full_auto', Callable(self, 'on_full_auto'))
|
||||
signaller.connect('interfer_prenuditelno', Callable(self, 'on_interfer_prenuditelno'))
|
||||
signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno'))
|
||||
signaller.connect('emit_changed', Callable(self, 'on_emit_changed').bind(ecms))
|
||||
threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit))
|
||||
|
||||
|
||||
@@ -263,6 +265,7 @@ func interfer_create(interfer_name, ecms, param, kni, id, dict, source_interfer)
|
||||
ecm.params = param
|
||||
ecm.powp = 100.0 # Необходимо добавить управление мощностью
|
||||
ecm.source_interfer = source_interfer
|
||||
ecm.modulation = emit_enable
|
||||
signaller.emit_signal('interfer_new', ecm)
|
||||
if interfer_name == 'off':
|
||||
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
|
||||
@@ -307,3 +310,8 @@ func push_id(id : int):
|
||||
|
||||
## Отправляет словарь помех в юнит, для запаковки и отправки в 5П28.
|
||||
func on_get_interfers(unit, ecms): unit.pack_interfers(cu, ecms)
|
||||
|
||||
func on_emit_changed(state, ecms):
|
||||
emit_enable = state
|
||||
for ecm in ecms.values():
|
||||
ecm.modulation = state
|
||||
|
||||
@@ -51,7 +51,7 @@ const prd_names: Array = [
|
||||
'уарэп-яу07-4в',
|
||||
'уарэп-яу07-4к', ]
|
||||
|
||||
const fs_ampls: Dictionary = {
|
||||
const fs_prd: Dictionary = {
|
||||
0: ['уарэп-яу07-1к'],
|
||||
1: ['уарэп-яу07-4к'],
|
||||
2: ['уарэп-яу07-3к'],
|
||||
@@ -84,11 +84,13 @@ const fs_ampls: Dictionary = {
|
||||
var fs_dict: Dictionary
|
||||
var prd_dict: Dictionary
|
||||
|
||||
class FsAmpl:
|
||||
class Fs:
|
||||
var index ## Индекс блока усилителей
|
||||
var modulation: int ## Состояние модуляции
|
||||
var modulation: bool ## Состояние модуляции
|
||||
var prd_name: String ## Ипя прибора ПРД в котором стоит модуль
|
||||
|
||||
signal update_modulation(index)
|
||||
|
||||
func _init(i, p_name):
|
||||
prd_name = p_name
|
||||
index = i
|
||||
@@ -108,6 +110,9 @@ class PRD:
|
||||
unit_yau07 = u
|
||||
yemsg_board = yems_board
|
||||
|
||||
func on_update_modulation(index):
|
||||
yemsg_board.add_cmd(index/4, fs_dic[index].modulation)
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
for prd_name in prd_names:
|
||||
@@ -118,11 +123,12 @@ func _ready() -> void:
|
||||
var yemsg_b = yemsg_board[0]
|
||||
var new_prd = PRD.new(prd_name, unit_prd, yemsg_b)
|
||||
prd_dict[prd_name] = new_prd
|
||||
for key in fs_ampls.keys():
|
||||
var fs_ampl = FsAmpl.new(key, fs_ampls[key][0])
|
||||
fs_dict[key] = fs_ampl
|
||||
if prd_dict.has(fs_ampl.prd_name):
|
||||
prd_dict[fs_ampl.prd_name].fs_dic[key] = fs_ampl
|
||||
for key in fs_prd.keys():
|
||||
var fs = Fs.new(key, fs_prd[key][0])
|
||||
fs_dict[key] = fs
|
||||
if prd_dict.has(fs.prd_name):
|
||||
prd_dict[fs.prd_name].fs_dic[key] = fs
|
||||
fs.connect('update_modulation', prd_dict[fs.prd_name].on_update_modulation.bind(fs.index))
|
||||
|
||||
|
||||
func get_fs_index(ecm, fs_index_arr):
|
||||
@@ -143,8 +149,20 @@ func get_fs_index(ecm, fs_index_arr):
|
||||
|
||||
|
||||
func update_fs_state(ecms):
|
||||
for fs in fs_dict.values():
|
||||
fs.set_modulation(false)
|
||||
for ecm in ecms.values():
|
||||
var fs_ids: Array
|
||||
get_fs_index(ecm, fs_ids)
|
||||
|
||||
pass
|
||||
for fs_index in fs_ids:
|
||||
var fs = fs_dict[fs_index]
|
||||
fs.set_modulation(ecm.modulation)
|
||||
for prd_module in prd_dict.values():
|
||||
if not prd_module.unit_yau07.online: continue
|
||||
for fs in prd_module.fs_dic.values():
|
||||
var dev_mode = prd_module.yemsg_board.get_dev_mode(fs.index)
|
||||
var fs_state = 2
|
||||
if fs.modulation:
|
||||
fs_state = 3
|
||||
if dev_mode != fs_state:
|
||||
fs.emit_signal('update_modulation')
|
||||
|
||||
@@ -115,7 +115,7 @@ signal interfer_off_all()
|
||||
|
||||
|
||||
## Вызывается при нажатии паника.
|
||||
signal interfer_prenuditelno(interfer_sectors: Dictionary)
|
||||
signal interfer_prinuditelno(interfer_sectors: Dictionary)
|
||||
|
||||
|
||||
## Вызывается при получении внешнего целеуказания.
|
||||
@@ -151,8 +151,10 @@ signal th_aoa_update(threats: Dictionary)
|
||||
## [param ecms] - <...>
|
||||
signal fs_update_color(ecms: Dictionary)
|
||||
|
||||
|
||||
signal socket_error(error: String)
|
||||
|
||||
|
||||
## Вызывается при нажатии на кнопку экранной клавиатуры
|
||||
## [param state] - состояние нажатого переключателя виртуальной клавиатуры астры
|
||||
signal kb_pressed(state)
|
||||
@@ -161,3 +163,8 @@ signal kb_pressed(state)
|
||||
## Вызывается при нажатии на кнопку экранной клавиатуры
|
||||
## [param state] - состояние скрытия кнопки ЭМС2
|
||||
signal ems2_hide_pressed(state)
|
||||
|
||||
|
||||
## Вызывается при нажатии на кнопку экранной клавиатуры
|
||||
## [param state] - состояние скрытия кнопки ЭМС2
|
||||
signal emit_changed(state)
|
||||
|
||||
Reference in New Issue
Block a user