From 3b938f76133f74a626410c7e88ab2e5fd99ffc31 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 9 Jul 2025 01:04:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=A1=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20"=D0=A2=D0=B8=D0=BF=208"=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=9A=D0=90=D0=9F=D0=A1-=D0=A0=D0=9F=D0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/interfer.gd | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/scripts/interfer.gd b/scripts/interfer.gd index b7bb8480..3e4eb095 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -25,6 +25,7 @@ const SOURCE_INTERFER = ['th','fs','cu'] const ID_INTERFERS_LEN = 63 ## Размер пула номеров целей. const INTERFER_OFF = 'off' var msg_num: int = 0 ## Счётчик сообщений. +var msg8_num: int = 0 ## Счётчик сообщений "тип 8" var id_array: Array ## Массив id воздействий. var thrs: Dictionary ## Словарь воздействия для целей, ключ - id воздействия. var fs: Dictionary ## Словарь воздействий для секторов, ключ - id воздействия. @@ -105,27 +106,46 @@ func _ready() -> void: for i in ID_INTERFERS_LEN: # Заполняет массив ID целей id_array.append(i + 1) var unit_key = settings.get_unit_key('уарэп-капсрпб') - var unit = network.units[unit_key] + var unit_caps = network.units[unit_key] var unit_5p28_key = settings.get_unit_key('уарэп-5п28') var unit_5p28 = network.units_tcp[unit_5p28_key] var timer_check_state: = Timer.new() add_child(timer_check_state) var resend_timeout = ProjectSettings.get_setting('application/interfer/resend_timeout', 1000.0) - timer_check_state.connect('timeout', Callable(self, 'on_timer_check_state').bind(unit, ecms, resend_timeout)) + timer_check_state.connect('timeout', Callable(self, 'on_timer_check_state').bind(unit_caps, ecms, resend_timeout)) timer_check_state.start(resend_timeout / 1000.0) - unit.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms)) + unit_caps.connect('data_received', Callable(self, 'on_data_capsrpb_received').bind(ecms)) 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, 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)) - signaller.connect('interfer_off_all', Callable(self, 'on_interfer_off_all').bind(unit, ecms)) - signaller.connect('th_aoa_update', Callable(self, 'on_th_aoa_update').bind(ecms, unit)) + 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('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')) signaller.connect('emit_changed', Callable(self, 'on_emit_changed').bind(ecms)) - threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit)) + threats.connect('threat_lost', Callable(self, 'on_threats_lost').bind(ecms, unit_caps)) + var key = settings.get_unit_key('навигация') + var unit_nav = network.units[key] + unit_nav.connect('data_received', on_nav_data_received.bind()) + + +func on_nav_data_received(coords: Dictionary, unit_caps): + var data_to_json = { + 'ts': 8, + 'ss': msg8_num, + 'roll': coords.get('bk', 0), + 'trim': coords.get('kk', 0), + 'long': coords.get('longitude', 0), + 'lat': coords.get('latitude', 0), + 'course': coords.get('k', 0), + 'speed': coords.get('speed', 0) } + var json_data = JSON.stringify(data_to_json).to_utf8_buffer() + unit_caps.tx_stack.append(json_data) + msg8_num += 1 + msg8_num %= 0xffffffff ## Проверяет состояние отправки пакета и если не доставлен, повторяет отправку.