Доработка. Переделан механизм отключения помехи, для её отключения надо отправить только саму помеху.

This commit is contained in:
MaD_CaT
2025-09-26 14:44:34 +03:00
parent cc5c74071a
commit 50e7222b57
5 changed files with 18 additions and 22 deletions

View File

@@ -122,21 +122,13 @@ func on_interfer_new(ecm, table_index):
signaller.emit_signal('interfer_selected', ecm)
func on_interfer_off(ecm, ecms, thrs, table_index):
var sz = ecms.size()
func on_interfer_off(ecm, table_index):
$table.remove_row(table_index[ecm.ispp])
rehash(table_index)
ecms.erase(ecm.ispp)
thrs.erase(ecm.ispp)
interfer.cu.erase(ecm.ispp)
interfer.fs.erase(ecm.ispp)
interfer.push_id(ecm.ispp)
var sel_rows: Array
$table.get_selected_rows(sel_rows)
if not len(sel_rows):
signaller.emit_signal('interfer_selected', null)
if sz != ecms.size():
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)
## Перестраивает индекс таблицы. Вызывать при удалении строки

View File

@@ -5,7 +5,7 @@ func on_line_changed(unit_inst): log.message(Logger.INFO, '\"%s\" изменен
func on_command_fail(unit_inst): log.message(Logger.ERROR, '\"%s\" команда не выполнена' % unit_inst.name)
func on_threats_changed(th: Object, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, th.to_string()])
func on_parse_error(unit_inst, msg: String): log.message(Logger.ERROR, '%s: %s' % [unit_inst.name, msg])
func on_interfer_off(ecm, _ecms, _thrs,msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])
func on_interfer_off(ecm, msg: String): log.message(Logger.INFO, '%s: %s' % [msg, ecm.to_string()])
func on_set_program_mode(msg: String): log.message(Logger.INFO, msg)
func on_interfer_new(ecm, msg: String):

View File

@@ -229,13 +229,6 @@ func on_interfer_off_all():
update_fs_colors()
func on_interfer_off(ecm_id):
fs_active.erase(ecm_id)
fs_selected.erase(ecm_id)
fs_active.clear()
update_fs_colors()
## Обработчик сигнала обнаружения цели.
func on_threat_new(th) -> void:
var bip = Bip.instantiate()

View File

@@ -180,7 +180,7 @@ func _ready() -> void:
signaller.connect('interfer_new', Callable(self, 'send_ecm').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'))
signaller.connect('interfer_off', Callable(self, 'on_interfer_off').bind(ecms))
signaller.connect('manual_control', Callable(self, 'on_manual_control'))
signaller.connect('full_auto', Callable(self, 'on_full_auto'))
signaller.connect('interfer_prinuditelno', Callable(self, 'on_interfer_prinuditelno'))
@@ -391,7 +391,7 @@ func interfer_create(u, interfer_name, ecms, param, kni, id, dict, source_interf
log.error('Ошибка выбора модуля ФС для помехи: %s' %[ecm.ispp])
signaller.emit_signal('interfer_new', ecm)
if interfer_name == 'off':
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
signaller.emit_signal('interfer_off', ecm)
thrs.erase(ispp)
ecm.tick_tx = Time.get_ticks_msec()
send_ecm(ecm, u)
@@ -414,7 +414,7 @@ func on_interfer_off_all(unit0, ecms: Dictionary) -> void:
for ecm in ecms.values():
ecm.krp = INTERFER_OFF
send_ecm(ecm, unit0)
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
signaller.emit_signal('interfer_off', ecm)
func on_threats_lost(th, ecms, unit0) -> void:
@@ -424,7 +424,7 @@ func on_threats_lost(th, ecms, unit0) -> void:
var ecm = ecms[ecm_id]
ecm.krp = INTERFER_OFF
send_ecm(ecm, unit0)
signaller.emit_signal('interfer_off', ecm, ecms, thrs)
signaller.emit_signal('interfer_off', ecm)
func pop_id() -> int:
@@ -596,3 +596,14 @@ func get_krp(threat: threats.Threat):
krp = key
return krp
return krp
func on_interfer_off(ecm: Interfer, ecms):
var sz = ecms.size()
ecms.erase(ecm.ispp)
thrs.erase(ecm.ispp)
interfer.cu.erase(ecm.ispp)
interfer.fs.erase(ecm.ispp)
interfer.push_id(ecm.ispp)
if sz != ecms.size():
interfer.call_deferred('emit_signal', 'interfer_resized', ecms)

View File

@@ -107,7 +107,7 @@ signal interfer_new(ecm: interfer.Interfer)
## [param ecm] - Новая помеха.[br]
## [param ecms] - словарь помех.[br]
## [param thrs] - словарь id помех и связанных с ними целей.[br]
signal interfer_off(ecm: interfer.Interfer, ecms: Dictionary, thrs: Dictionary)
signal interfer_off(ecm: interfer.Interfer)
## Вызывается при нажатии отключить.