Доработка. Исправления__Убран_лишний_принт__Доработка__Рекомендованная_помеха__Курс_корабля_по_цели__

This commit is contained in:
MaD_CaT
2025-10-13 11:35:41 +03:00
committed by sasha80
parent 308c028038
commit fad2e1cd64
7 changed files with 73 additions and 49 deletions

View File

@@ -151,7 +151,10 @@ func map_th_to_row(ecm) -> Array:
row[COLUMN_NAME] = ''
if INTERFER_NAMES.has(ecm.krp):
row[COLUMN_NAME] = '%s' % INTERFER_NAMES[ecm.krp]
row[COLUMN_AOA] = '%s' % (ecm.kni + course)
var aoa = ecm.kni + course
if aoa > 360.0:
aoa -= 360.0
row[COLUMN_AOA] = '%5.1f' % aoa
row[COLUMN_STATE] = ''
if INTERFER_STATE.has(ecm.svk):
row[COLUMN_STATE] = '%s' % INTERFER_STATE[ecm.svk]

View File

@@ -149,5 +149,4 @@ size_flags_vertical = 3
strips_rotation = 30.0
text = "ЕПРЛС"
disabled = true
font_size = 1
metadata/rfi_name = "eprls"

View File

@@ -381,7 +381,7 @@ func _process(delta) -> void:
func _response(result, code, _headers: Array, body: PackedByteArray, req, tile: Tile) -> void:
var unit_instance = network.get_unit_instance('уарэп-карта')
_req_count -= 1
remove_child(req)
req.queue_free()
@@ -405,7 +405,6 @@ func _response(result, code, _headers: Array, body: PackedByteArray, req, tile:
push_error('не удалось получить изображение (неверный формат?) из \"%s\"' % tile.url)
return
var unit_instance = network.get_unit_instance('уарэп-карта')
unit_instance.rx_tick = Time.get_ticks_msec()
if not unit_instance.online:
unit_instance.online = true

View File

@@ -30,6 +30,7 @@ var strob_band_begin: float ## Ширина строба в моме
var strob_dir_begin: float ## Направление антенны в момент начала перетаскивания.
var strob_width_begin: float ## Ширина строба по углу в момент начала перетаскивания.
var view_mode: MapViewMode ## Режим отображения карты
var thrs_dict: Dictionary ## Ссылка на словарь целей
var color_ecm: Color
var color_select: Color
@@ -93,6 +94,7 @@ func on_threats_resized(ths: Dictionary):
$count_all_pad/count_all.text = '%02d' % ths.size()
var c: int = ths.values().filter(func(th: threats.Threat): return th.proto != '').size()
$count_danger_pad/count_danger.text = '%02d' % c
thrs_dict = ths
## Обработчик нажатия на кнопку вид.
@@ -287,18 +289,27 @@ func on_rto_threat_sel(th_id, ecm_btns):
unsel_fs_all(false)
else:
item.set_sel_visible(false)
var th = thrs_dict[th_id]
var krp = interfer.get_krp(th)
for btn in ecm_btns:
set_btns_disabled(false, btn)
var btn_meta = btn.get_meta('rfi_name')
if krp == btn_meta:
btn.modulate = Color.DEEP_SKY_BLUE
else:
btn.modulate = Color(1.0, 1.0, 1.0, 1.0)
## Обработчик снятия выбора РТО цели.
func on_rto_threat_unsel(th_id, _ecm_btns):
func on_rto_threat_unsel(th_id, ecm_btns):
var bips: Array = get_children().filter(func(item): return item.name.is_valid_int())
for item in bips:
if th_id == item.name.to_int():
item.set_sel_visible(false)
break
set_ecm_btns_state(true)
for btn in ecm_btns:
btn.modulate = Color(1.0, 1.0, 1.0, 1.0)
## Обработчик нажатия кнопки "Строб". Управляет отображением строба.

View File

@@ -39,15 +39,27 @@ const LCHM2_PARAMS = {'par_names' : ['freq', 'width', 'period']}
const MCHM1_PARAMS = {'par_names' : ['freq', 'filename'],
'files': 'MCHM1.pcm',
'call_proc': 'call_all_diap'}
const PDM2_PARAMS = {'par_names' : ['freq', 'filename'],
'files': 'PDM2_20.pcm',
'call_proc': 'call_all_diap'}
const PDM4_PARAMS = {'par_names' : ['freq', 'filename'],
'files': 'PDM4_20.pcm',
'call_proc': 'call_all_diap'}
const PDM4S_PARAMS = {'par_names' : ['freq', 'filename'],
'files': 'PDM4S_5.pcm',
'call_proc': 'call_all_diap'}
const PDM2_PARAMS = {'files': {
20 : 'PDM2_20.pcm',
40: 'PDM2_40.pcm',
88: 'PDM2_88.pcm',
112: 'PDM2_112.pcm' },
'call_proc': 'call_pdchm',
'par_names' : ['freq', 'filename'],}
const PDM4_PARAMS = {'files': {
20 : 'PDM4_20.pcm',
40: 'PDM4_40.pcm',
84: 'PDM4_84.pcm',
108: 'PDM4_108.pcm' },
'call_proc': 'call_pdchm',
'par_names' : ['freq', 'filename'],}
const PDM4S_PARAMS = {'files': {
5 : 'PDM4S_5.pcm',
7 : 'PDM4S_10.pcm',
10: 'PDM4S_2_5.pcm',
20: 'PDM4S_10.pcm' },
'call_proc': 'call_pdchm',
'par_names' : ['freq', 'filename'],}
const K1_PARAMS = {'files' : 'K1.pcm',
'call_proc' : 'call_all_diap',
'par_names' : ['freq', 'filename']}
@@ -68,10 +80,10 @@ const EPRLS_PARAMS = {'files' : 'ERLS.pcm',
'par_names' : ['freq', 'filename']}
# Файл : Ключ (ширина): ['имя файла']
const PDCHM_PARAMS = {'files': {
5 : 'pdchm_5.pcm',
10: 'pdchm__0.pcm',
20: 'pdchm_20.pcm',
40: 'pdchm_40.pcm' },
5 : 'PDCHM_5.pcm',
10: 'PDCHM_10.pcm',
20: 'PDCHM_20.pcm',
40: 'PDCHM_40.pcm' },
'call_proc': 'call_pdchm',
'par_names' : ['freq', 'filename'],}
@@ -91,6 +103,7 @@ var thrs_dict: Dictionary ## Ссылка на словарь целей
var auto_enabled: bool = false ## Режим автомата
var emit_enable: bool = true ## Разрешить излучение
var trenazh_mode: bool = false ## Переключение режима Тренаж
var course = 0.0 ## Курс корабля
## Сеанс помехи.
class Interfer:
@@ -182,7 +195,7 @@ func _ready() -> void:
unit_5p28.connect('get_interfers', Callable(self, 'on_get_interfers').bind(unit_5p28, ecms))
signaller.connect('interfer_create', Callable(self, 'on_interfer_create').bind(unit_caps, ecms))
signaller.connect('interfer_rcv', Callable(self, 'on_interfer_rcv').bind(unit_5p28, ecms))
signaller.connect('interfer_new', Callable(self, 'send_ecm').bind(unit_caps))
signaller.connect('interfer_new', Callable(self, 'on_interfer_new').bind(unit_caps))
signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit_caps, ecms))
signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms, unit_caps))
signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind(ecms))
@@ -203,6 +216,7 @@ func on_trenazh_mode(val: bool): trenazh_mode = val
func on_nav_data_received(coords: Dictionary, unit_caps):
var ship_time = Time.get_datetime_dict_from_system()
course = coords.get('k', 0.0)
var data_to_json = {
'ts': 8,
'ss': msg8_num,
@@ -240,7 +254,9 @@ func on_th_aoa_update(threats: Dictionary, ecms: Dictionary, unit_instance) -> v
if thrs[ecm_i] == th_id:
var ecm = ecms[ecm_i]
ecm.params['freq'] = thr.freq
ecm.kni = thr.aoa
ecm.kni = thr.aoa - course
if ecm.kni < 0:
ecm.kni += 360
send_ecm(ecm, unit_instance)
signaller.emit_signal('fs_update_color', ecms)
prd.update_fs_state(ecms, trenazh_mode)
@@ -304,7 +320,9 @@ func map_mpchf_to_seczaps(unit_instance: unit.Unit, seczaps: Dictionary):
func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> void:
for item in sel_threats:
var param: Dictionary = {}
var kni: float = item.aoa
var kni: float = item.aoa - course
if kni < 0:
kni += 360.0
var id = item.id
param['freq'] = item.freq
param['width'] = item.width
@@ -323,38 +341,22 @@ func on_interfer_create(interfer_name, sel_threats, fs_arr, power, u, ecms) -> v
var param: Dictionary = {}
var kni: float = item[0]
var id = item[3]
var th = null
th = find_threat(item[1], kni)
if th != null:
if not interfer_name in EXCLUDE_INTERFER:
param['freq'] = th.freq
param['width'] = th.width
else:
param['freq'] = item[1]
param['width'] = item[2]
if (th.rkrp != '') and th.fflags.rkrp and auto_enabled:
var krp = get_krp(th)
if krp != '':
interfer_name = krp
set_rparams(th, param)
else:
param['freq'] = item[1]
param['width'] = item[2]
if (param['width'] < settings.WIDTH_MIN):
param['width'] = settings.WIDTH_MIN
elif (param['width'] > settings.WIDTH_MAX):
param['width'] = settings.WIDTH_MAX
if th == null:
interfer_create(u, interfer_name, ecms, param, kni, id, fs, SOURCE_INTERFER[1], power)
else:
id = th.id
interfer_create(u, interfer_name, ecms, param, kni, id, thrs, SOURCE_INTERFER[0], power)
func on_interfer_rcv(interfer_params: Array, unit0, ecms) -> void:
var err: bool = false
var mode = interfer_params[0]
var id = interfer_params[1]
var aoa = interfer_params[2]
var aoa = interfer_params[2] - course
if aoa < 0:
aoa += 360
var um = interfer_params[3]
if (aoa < 0.0) and (aoa > 360.0):
err = true
@@ -527,7 +529,9 @@ func on_threats_update(threat, ecms, unit_caps):
ecm.krp = krp
set_rparams(threat, ecm.params)
emit_signal('interfer_recommendate', ecm)
ecm.kni = threat.aoa
ecm.kni = threat.aoa - course
if ecm.kni < 0:
ecm.kni += 360
set_nmfs(ecm)
if threat.tmod != 'fm':
if ecm != null:
@@ -637,3 +641,11 @@ func on_interfer_off(ecm: Interfer, ecms):
interfer.push_id(ecm.ispp)
if sz != ecms.size():
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)
func on_interfer_new(ecm, unit_caps):
var ecm_params = ITERFER_MODE[ecm.krp][1]
if ecm_params.has('call_proc'):
var call_set_params = Callable(self, ecm_params['call_proc']).bind(ecm, ecm_params)
call_set_params.call()
send_ecm(ecm, unit_caps)

View File

@@ -33,8 +33,8 @@ const FS_FREQ: Dictionary = {
0: [390.0, 510.0, 450.0],
1: [800.0, 1065.0, 932.0],
2: [1065.0, 1210.0, 1137.0],
3: [1150.0, 1280.0, 1215.0],
4: [1490.0, 2000.0, 1575.0],
3: [1150.0, 1380.0, 1215.0],
4: [1380.0, 2000.0, 1575.0],
5: [2000.0, 3500.0, 2750.0],
6: [3500.0, 6000.0, 4750.0] }

View File

@@ -50,7 +50,7 @@ var UnitProfiles: Dictionary[StringName, Array] = { \
const FREQ_MAX: = 6000.0
const FREQ_MIN: = 400.0
const WIDTH_MAX: = 100.0
const WIDTH_MAX: = 120.0
const WIDTH_MIN: = 0.0
const DUR_MAX: = 1000000.0
const PERIOD_MAX: = 1000000.0