Доработка. Управление модуляцией усилителей. Кнопка подавление определяет режим по умолчанию для всех помех.

This commit is contained in:
MaD_CaT
2025-02-17 16:09:30 +03:00
parent 7676966c9c
commit 33ee5bbf96
10 changed files with 94 additions and 33 deletions

View File

@@ -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

View File

@@ -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')

View File

@@ -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)