diff --git a/scenes/работа.gd b/scenes/работа.gd index 5f99bb28..23ec6f64 100644 --- a/scenes/работа.gd +++ b/scenes/работа.gd @@ -50,11 +50,11 @@ func on_threats_changed(threats: Dictionary, th: Object): $count_all_pad/count_a ## Производит инициализацию func _ready(): - $btn_strobe.button_connect('pressed', Callable(self, 'on_button_strobe_pressed')) - $btn_off.set_pressed(true) - strob_center = $canvas.get_strob_center() - on_button_strobe_pressed() - drag_fsm = DragFSM.OFF + $btn_strobe.button_connect('pressed', Callable(self, 'on_button_strobe_pressed')) + $btn_off.set_pressed(true) + strob_center = $canvas.get_strob_center() + on_button_strobe_pressed() + drag_fsm = DragFSM.OFF var nodes: = get_tree().get_nodes_in_group('группа-режим-помехи') nodes.any(func(btn): btn.button_connect('pressed', Callable(self, 'on_button_pressed').bind(btn, nodes))) Threats.connect('threat_lost', Callable(self, 'on_threat_lost')) @@ -99,17 +99,17 @@ func on_threat_lost(threats: Dictionary, th: Object): ## Обработчик нажатия кнопки "Строб". Управляет отображением строба func on_button_strobe_pressed(): - if $btn_strobe.is_pressed(): - $canvas.set_strob_visible(true) - drag_fsm = DragFSM.IDLE - else: - $canvas.set_strob_visible(false) - drag_fsm = DragFSM.OFF + if $btn_strobe.is_pressed(): + $canvas.set_strob_visible(true) + drag_fsm = DragFSM.IDLE + else: + $canvas.set_strob_visible(false) + drag_fsm = DragFSM.OFF ## Поведение радиокнопок в группе. Управляет состоянием кнопок в радиогруппе func on_button_pressed(btn_this, btn_others): - for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other) + for btn_other in btn_others: btn_other.set_pressed(btn_this == btn_other) ## Возвращает ширину строба по направлению @@ -121,9 +121,9 @@ func get_strob_width(pos: Vector2, prev: float) -> float: ## Возвращает ширину строба по частоте func get_strob_band(pos: Vector2, prev: float) -> float: - var strob_dir_band: float = prev - (drag_pos_begin.y - pos.y) * drag_scale_band - strob_dir_band = Tools.clip_value(strob_dir_band, strob_min_band, strob_max_band) - return strob_dir_band + var strob_dir_band: float = prev - (drag_pos_begin.y - pos.y) * drag_scale_band + strob_dir_band = Tools.clip_value(strob_dir_band, strob_min_band, strob_max_band) + return strob_dir_band ## Устанавливает центр строба по частоте и направлению @@ -159,23 +159,23 @@ func _on_drag_begin(event): ## Обработчик событий вввода. Вызывается godot func _input(event): - if event is InputEventMouseMotion: - if drag_fsm == DragFSM.DRAG: - emit_signal('drag_continue', event) - elif event is InputEventMouseButton: - drag_button = event.button_index - if event.pressed: - if drag_fsm == DragFSM.IDLE: - drag_fsm = DragFSM.DRAG - emit_signal('drag_begin', event) - else: - drag_fsm = DragFSM.IDLE - emit_signal('drag_end', event) - elif event is InputEventKey: - if event.pressed and event.physical_keycode == KEY_F11: - emit_signal('full_screen') - elif event.physical_keycode == KEY_SHIFT: - shift_pressed = event.pressed + if event is InputEventMouseMotion: + if drag_fsm == DragFSM.DRAG: + emit_signal('drag_continue', event) + elif event is InputEventMouseButton: + drag_button = event.button_index + if event.pressed: + if drag_fsm == DragFSM.IDLE: + drag_fsm = DragFSM.DRAG + emit_signal('drag_begin', event) + else: + drag_fsm = DragFSM.IDLE + emit_signal('drag_end', event) + elif event is InputEventKey: + if event.pressed and event.physical_keycode == KEY_F11: + emit_signal('full_screen') + elif event.physical_keycode == KEY_SHIFT: + shift_pressed = event.pressed ## Переключает режим окна программы полный - обычный экран diff --git a/scripts/repnetwork.gd b/scripts/repnetwork.gd index cba6c8f2..68a00672 100644 --- a/scripts/repnetwork.gd +++ b/scripts/repnetwork.gd @@ -15,46 +15,46 @@ var logger_page: Node func create_socket(nm) -> Socket: - var addr = REPSettings.UnitProfiles[nm][1] - var port = REPSettings.UnitProfiles[nm][2] - var broad = REPSettings.UnitProfiles[nm][3] - var bind = REPSettings.UnitProfiles[nm][4] - var sock: = Socket.new() - sock.set_broadcast_enabled(broad) - var rc = Error.OK if not bind else sock.bind(port, addr) - var errlevel = Log.INFO if rc == Error.OK else Log.ERROR - Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)]) - return sock + var addr = REPSettings.UnitProfiles[nm][1] + var port = REPSettings.UnitProfiles[nm][2] + var broad = REPSettings.UnitProfiles[nm][3] + var bind = REPSettings.UnitProfiles[nm][4] + var sock: = Socket.new() + sock.set_broadcast_enabled(broad) + var rc = Error.OK if not bind else sock.bind(port, addr) + var errlevel = Log.INFO if rc == Error.OK else Log.ERROR + Log.message(errlevel, '%s: сокет:%s:%d привязанный:%s %s' % [nm, addr, port, ['нет', 'да'][int(bind)], error_string(rc)]) + return sock func _ready() -> void: - Log.info('Сетевой модуль готов') + Log.info('Сетевой модуль готов') poll_sockets.append(create_socket('уарэп-яу07-частный')) - poll_sockets.append(create_socket('уарэп-яу07-общий')) - poll_sockets.append(create_socket('уарэп-капсрпб-пол')) + poll_sockets.append(create_socket('уарэп-яу07-общий')) + poll_sockets.append(create_socket('уарэп-капсрпб-пол')) sock_unicast = poll_sockets[0] for unit_name in REPSettings.UnitProfiles: - var setting = REPSettings.UnitProfiles[unit_name] - var proto = setting[0] - if proto in PROTOCOL_TYPES: - var unit = PROTOCOL_TYPES[proto].new(unit_name) - var unit_key = REPSettings.get_unit_key(unit_name) - units[unit_key] = unit - unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key)) - unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key)) + var setting = REPSettings.UnitProfiles[unit_name] + var proto = setting[0] + if proto in PROTOCOL_TYPES: + var unit = PROTOCOL_TYPES[proto].new(unit_name) + var unit_key = REPSettings.get_unit_key(unit_name) + units[unit_key] = unit + unit.connect('line_changed', Callable(logger_page, 'on_line_changed').bind(unit_key)) + unit.connect('command_fail', Callable(logger_page, 'on_command_fail').bind(unit_key)) for key in units: Log.info('%s %s:%d' % [units[key].name, key[0], key[1]]) func poll_receive(sock: Socket) -> bool: - while sock.get_available_packet_count() > 0: - var data: = sock.get_packet() - var addr: = sock.get_packet_ip() - var port: = sock.get_packet_port() - var addr_port: = [addr, port] - if addr_port in units: units[addr_port].parse(data) + while sock.get_available_packet_count() > 0: + var data: = sock.get_packet() + var addr: = sock.get_packet_ip() + var port: = sock.get_packet_port() + var addr_port: = [addr, port] + if addr_port in units: units[addr_port].parse(data) return false diff --git a/scripts/threats.gd b/scripts/threats.gd index e450ab50..45b00a5d 100644 --- a/scripts/threats.gd +++ b/scripts/threats.gd @@ -27,10 +27,10 @@ class Threat: var width: float ## Ширина занимаемого диапазона частот, МГц. var id: int ## Идентификатор цели. - func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false) + func _init(): Tools.get_members_names(self).any(func(vn): fflags[vn] = false) func _to_string() -> String: return 'номер:%d пеленг:%0.1f частота:%0.1f МГц' % [id, aoa, freq] - func set_from_dic(dic_vals: Dictionary): + func set_from_dic(dic_vals: Dictionary): var items: = fflags.keys().filter(func(vn): return vn in dic_vals) items.any(func(vn): set(vn, dic_vals[vn]); fflags[vn] = true; return false) @@ -43,12 +43,12 @@ var threats = {} ## Список целей. Индекс - <источник func _ready() -> void: - Log.info('Модуль обработки целей готов') - #var unit_key = REPSettings.get_unit_key('уарэп-капсрпб-отп') + Log.info('Модуль обработки целей готов') + var unit_key = REPSettings.get_unit_key('уарэп-капсрпб-отп') var unit = REPNetwork.units[unit_key] var timer_check_lost: = Timer.new() add_child(timer_check_lost) - #unit.connect('data_received', Callable(self, 'on_data_capsrpb_received')) + #unit.connect('data_received', Callable(self, 'on_data_capsrpb_received')) timer_check_lost.connect('timeout', Callable(self, 'on_timer_check_lost').bind(unit, REPSettings.ThreatParams.time_lost[0])) timer_check_lost.start(REPSettings.ThreatParams.time_lost[0] / 2.0) @@ -63,7 +63,7 @@ func on_timer_check_lost(unit, time_lost: int): ## Приём целей func on_data_capsrpb_received(unit: capsrpb.CapsRpb): - if 'mis' not in unit.json_dic: + if 'mis' not in unit.json_dic: return var mis = unit.json_dic['mis'] for dic_th in mis: diff --git a/scripts/yems_devs.gd b/scripts/yems_devs.gd index c0937006..d8d6eb25 100644 --- a/scripts/yems_devs.gd +++ b/scripts/yems_devs.gd @@ -11,10 +11,10 @@ class InDev: var freq: int # Предполагаемая частота на которой работает комплекс var ports_data: Dictionary # Словарь состояния портов устройства var tbl_row_id: int # Индекс устройства в таблице выходов - var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы + var out_dots: Array # Список выходных устройств в порядке, как в таблице и точки матрицы var connect_devs: Dictionary # Список присоединённых устройств var board: String # Плата в которой находится устройство - + func _init(dev_id : int, params : Array, row_id : int): id = dev_id dev_name = String(params[0]) @@ -22,16 +22,16 @@ class InDev: delay = float(params[2]) offset = float(params[3]) tbl_row_id = row_id - - + + class OutDev extends InDev: var mode: String # Режим работы выхода - + func _init(dev_id : int, params : Array, row_id : int): id = dev_id dev_name = String(params[0]) connector = String(params[1]) delay = float(params[2]) offset = float(params[3]) - tbl_row_id = row_id + tbl_row_id = row_id mode = 'Работа' diff --git a/scripts/yemsboards.gd b/scripts/yemsboards.gd index ebd3f868..d24f7583 100644 --- a/scripts/yemsboards.gd +++ b/scripts/yemsboards.gd @@ -7,8 +7,8 @@ class EmsBoard: var base_addr_isa: int # Базовый адрес ячейки isa var in_tbl: Array var out_tbl: Array - - func _init(id, base_addr, in_table, out_table): + + func _init(id, base_addr, in_table, out_table): id_board = id in_tbl = in_table out_tbl = out_table diff --git a/table/table.gd b/table/table.gd index 3c9b9b19..3f9532a1 100644 --- a/table/table.gd +++ b/table/table.gd @@ -41,13 +41,13 @@ func _assert_meta(i_col: int, i_row: int, pname: String, node): assert(node.has_ func pin_header(scrl: ScrollContainer, prnt: Control): - scrl.remove_child(header) - prnt.add_child(header) - # TODO: Это значение следует получить из темы - var v_separation: = 3.0 - header.position = scrl.position - Vector2(0, header.size.y + v_separation) - scroll = scrl - scroll_adj = scrl.position + scrl.remove_child(header) + prnt.add_child(header) + ## TODO: Это значение следует получить из темы + var v_separation: = 3.0 + header.position = scrl.position - Vector2(0, header.size.y + v_separation) + scroll = scrl + scroll_adj = scrl.position func selector_up(): @@ -140,7 +140,7 @@ func get_node_property(i_col: int, i_row: int, pname: String): func get_node_key(format: String, i_col: int, i_row: int) -> String: var key: String = format % [i_row, i_col] - assert(nodes.has(key), 'ошибка: нет такой ячейки: колонка:%d ряд:%d' % [i_col, i_row]) + assert(nodes.has(key), 'ошибка: нет такой ячейки - колонка:%d ряд:%d' % [i_col, i_row]) return key @@ -278,30 +278,30 @@ func set_node_user_data(i_col: int, i_row: int, user_data: Object) -> void: func add_row(row_types: Array) -> void: - assert(row_types.size() < MAX_INDEX, 'ошибка: слишком много колонок, больше %d' % (MAX_INDEX + 1)) - if columns == 1: - set_columns(row_types.size()) - else: - assert(columns == row_types.size(), 'ошибка: %s количество колонок установлено ранее - %d, но требуется %d' % [self, columns, row_types.size()]) - var i_row: int = get_rows_count() - assert(i_row < MAX_INDEX, 'ошибка: слишком много рядов, больше %d' % (MAX_INDEX + 1)) - for i_col in columns: - var node = row_types[i_col].instantiate() - var head = nodes[HEAD_KEY_FORMAT % [0, i_col]] - node.custom_minimum_size.x = head.custom_minimum_size.x - node.set_deferred('size.x', head.size.x) - var node_key: String = NODE_KEY_FORMAT % [i_row, i_col] - node.name = node_key - add_child(node) - nodes[node_key] = node - var conn = Callable(self, '_on_focus_entered').bind(node) + assert(row_types.size() < MAX_INDEX, 'ошибка: слишком много колонок, больше %d' % (MAX_INDEX + 1)) + if columns == 1: + set_columns(row_types.size()) + else: + assert(columns == row_types.size(), 'ошибка: %s количество колонок установлено ранее - %d, но требуется %d' % [self, columns, row_types.size()]) + var i_row: int = get_rows_count() + assert(i_row < MAX_INDEX, 'ошибка: слишком много рядов, больше %d' % (MAX_INDEX + 1)) + for i_col in columns: + var node = row_types[i_col].instantiate() + var head = nodes[HEAD_KEY_FORMAT % [0, i_col]] + node.custom_minimum_size.x = head.custom_minimum_size.x + node.set_deferred('size.x', head.size.x) + var node_key: String = NODE_KEY_FORMAT % [i_row, i_col] + node.name = node_key + add_child(node) + nodes[node_key] = node + var conn = Callable(self, '_on_focus_entered').bind(node) node.connect('focus_entered', conn) set_node_meta(i_col, i_row, 'callable_focus_entered', conn) func _on_focus_entered(node): - var indexes = get_key_indexes(node.name) - emit_signal('row_pressed', indexes[1]) + var indexes = get_key_indexes(node.name) + emit_signal('row_pressed', indexes[1]) func set_header(header_types: Array): @@ -353,7 +353,7 @@ func remove_row(i_row: int): if nodes.has(sel_key): var selector = nodes[sel_key] var prnt = selector.get_parent() - prnt.remove_child(selector) + prnt.remove_child(selector) selector.queue_free() nodes.erase(sel_key) @@ -372,8 +372,8 @@ func remove_row(i_row: int): if nodes.has(conn_key): conn = nodes[conn_key] - node.disconnect('pressed', conn) - nodes.erase(conn_key) + node.disconnect('pressed', conn) + nodes.erase(conn_key) remove_child(node) nodes.erase(node_key) @@ -396,11 +396,9 @@ func swap_nodes(nodes_copy, node_key_format, i0, i1) -> void: func rehash(): - """ Переназначает ключи в соответствии с размерами таблицы. - После вызова swaps содержит массив пар [<прежний ключ>, <текущий ключ>] """ - var i_node: = [Vector2i()] - var i_hdr: = [Vector2i()] - var i_slct: = [Vector2i()] + var i_node: = [Vector2i()] + var i_hdr: = [Vector2i()] + var i_slct: = [Vector2i()] var i_conn: = [Vector2i()] var i_data: = [Vector2i()] var nodes_copy = {} @@ -409,21 +407,21 @@ func rehash(): var i0 = Vector2(iv[0], iv[1]) if HEAD_PREFIX in key: swap_nodes(nodes_copy, HEAD_KEY_FORMAT, i0, i_hdr[0]) - next_index(i_hdr) + next_index(i_hdr) elif NODE_PREFIX in key: swap_nodes(nodes_copy, NODE_KEY_FORMAT, i0, i_node[0]) next_index(i_node) elif SLCT_PREFIX in key: - swap_nodes(nodes_copy, ROW_SELECTOR_KEY_FORMAT, i0, i_slct[0]) - next_index(i_slct) + swap_nodes(nodes_copy, ROW_SELECTOR_KEY_FORMAT, i0, i_slct[0]) + next_index(i_slct) elif CONN_PREFIX in key: swap_nodes(nodes_copy, CONNECTED_KEY_FORMAT, i0, i_conn[0]) next_index(i_conn) elif DATA_PREFIX in key: swap_nodes(nodes_copy, DATA_KEY_FORMAT, i0, i_data[0]) next_index(i_data) - nodes.clear() - nodes.merge(nodes_copy) + nodes.clear() + nodes.merge(nodes_copy) func clear_rows() -> void: @@ -443,7 +441,7 @@ func connect_columns(dest_node: Node, event_name: String, callback: String, clmn var rows_count = get_rows_count() for i_row in rows_count: for i_col in clmns: - assert(i_col >= 0 and i_col < columns, 'ошибка: нет колонки %d' % i_col) + assert(i_col >= 0 and i_col < columns, 'ошибка: нет такой колонки: %d' % i_col) var node_key: String = NODE_KEY_FORMAT % [i_row, i_col] var conn_key: String = CONNECTED_KEY_FORMAT % [i_row, i_col] var node = nodes[node_key]