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 ## Проверяет состояние отправки пакета и если не доставлен, повторяет отправку.