diff --git a/scripts/interfer.gd b/scripts/interfer.gd index b0b10a5..90281f8 100644 --- a/scripts/interfer.gd +++ b/scripts/interfer.gd @@ -96,7 +96,7 @@ signal interfer_resized(ecms: Dictionary) ## Вызывается пр func _ready(): var ecms: Dictionary = {} ## Словарь помех. - for i in range(ID_INTERFERS_LEN): # Заполняет массив ID целей + 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] @@ -291,7 +291,7 @@ func on_threats_lost(th, ecms, unit): signaller.emit_signal('interfer_off',ecm, ecms, thrs) -func pop_id(): +func pop_id() -> int: var id = 0 if len(id_array): id = id_array[0] diff --git a/table/table.gd b/table/table.gd index 9d9363d..bce8dd6 100644 --- a/table/table.gd +++ b/table/table.gd @@ -47,12 +47,18 @@ var scroll_adj: = Vector2(0, 0) func get_node_scene(): return node_type_file -func assert_meta(i_col: int, i_row: int, pname: String, node): assert(node.has_meta(pname), 'ошибка: нет мета-свойства \"%s\" у ячейки колонка:%d ряд:%d' % [pname, i_col, i_row]) +func assert_meta(i_col: int, i_row: int, pname: String, node): _assert(node.has_meta(pname), 'нет мета-свойства \"%s\" у ячейки колонка:%d ряд:%d' % [pname, i_col, i_row]) func get_node_user_data(i_col: int, i_row: int): return get_node_meta(i_col, i_row, META_USER_DATA) func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_col, i_row, META_USER_DATA, val) func defaultselector_color_proc(_i_row: int): return selector_color +func _assert(val: bool, msg: String = '<не указано>'): + if val: return + push_error('ошибка: %s\n' % msg) + get_tree().quit(1) + + ## Закрепляет заголовок таблицы.[br] ## [param scrl] - Прокрутка родитель таблицы.[br] ## [param prnt] - Родитель прокрутки.[br] @@ -106,7 +112,7 @@ func selector_down(): ## Делает ряд [param i_row] видимым. func ensure_row_visible(i_row: int): - assert(scroll is ScrollContainer, 'Таблица должна быть дочерней к ScrollContainer') + _assert(scroll is ScrollContainer, 'таблица %s должна быть дочерней к ScrollContainer' % self) var key: = get_node_key(NODE_KEY_FORMAT, 0, i_row) var node = nodes[key] scroll.ensure_control_visible(node) @@ -114,7 +120,7 @@ func ensure_row_visible(i_row: int): ## Устанавливает выравнивание из массива [param alignments] для всех колонок. func set_columns_alignments(alignments: Array): - assert(columns == alignments.size()) + _assert(columns == alignments.size()) var rows_count: = get_rows_count() for i_row in rows_count: for i_col in alignments.size(): @@ -137,8 +143,8 @@ func load_node_scene(file_name: String): func _ready(): ScnSelector = load(selector_type_file) ScnNode = load(node_type_file) - assert(ScnSelector is PackedScene) - assert(ScnNode is PackedScene) + _assert(ScnSelector is PackedScene, '\"%s\" не PackedScene', ScnSelector) + _assert(ScnNode is PackedScene, '\"%s\" не PackedScene', ScnNode) ## Выравнивает по нижнему левому углу. Используется для выравнивания по заголовку. @@ -197,7 +203,7 @@ func get_node_property(i_col: int, i_row: int, pname: String): ## [param i_row] - Индекс ряда 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 @@ -206,7 +212,7 @@ func get_node_key(format: String, i_col: int, i_row: int) -> String: ## [b][1][/b] - индекс строки. func get_key_indexes(key: String) -> Array: var tokens: = key.split('_') - assert(tokens.size() == 3, 'ошибка: неверный ключ: \"%s\"' % key) + _assert(tokens.size() == 3, 'неверный ключ: \"%s\"' % key) return [int(tokens[2]), int(tokens[1])] @@ -257,9 +263,9 @@ func _input(event) -> void: ## func _init() -> void: selector_color_proc = Callable(self, 'defaultselector_color_proc') - assert(selector_color_proc.is_valid()) + _assert(selector_color_proc.is_valid(), 'defaultselector_color_proc(): обработчик \"%s\" не является Callable' % selector_color_proc) selector_size_proc = Callable(self, 'default_selector_size_proc') - assert(selector_size_proc.is_valid()) + _assert(selector_size_proc.is_valid(), 'default_selector_size_proc(): обработчик \"%s\" не является Callable' % selector_size_proc) scroll = self @@ -275,13 +281,13 @@ func check_event_pos(event_pos: Vector2, obj: Control): ## func setselector_color_proc(instance: Object, function: String) -> void: selector_color_proc = Callable(instance, function) - assert(selector_color_proc.is_valid()) + _assert(selector_color_proc.is_valid()) ## func set_selector_size_proc(instance: Object, function: String) -> void: selector_size_proc = Callable(instance, function) - assert(selector_size_proc.is_valid()) + _assert(selector_size_proc.is_valid()) ## [param i_row] - Индекс ряда @@ -361,18 +367,18 @@ func get_node2(i_col: int, i_row: int) -> Node: ## Добавляет ряд. [param row_types] - Массив типов ячеек ряда func add_row(row_types: Array) -> void: - assert(row_types.size() < MAX_INDEX, 'ошибка: слишком много колонок, больше %d' % (MAX_INDEX + 1)) + _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()]) + _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)) + _assert(i_row < MAX_INDEX, 'рядов больше, чем %d' % (MAX_INDEX + 1)) var allow_set_size = columns_min_size.size() >= row_types.size() for i_col in columns: var node_type = row_types[i_col] var node = node_type.instantiate() - assert(node.name == node.name, 'ошибка: экземпляр не имеет поля \"name\"') + _assert(node.get('name') is StringName, 'экземпляр не имеет поля \"name\"') var node_key: String = NODE_KEY_FORMAT % [i_row, i_col] node.name = node_key add_child(node) @@ -426,7 +432,7 @@ func set_header(header_types: Array): ## func set_header_text(headers: Array): - assert(columns == headers.size()) + _assert(columns == headers.size(), 'количество элементов для заголовка %d, а должно быть %d' % [headers.size(), columns]) set_row_text(0, headers, 0, HEAD_KEY_FORMAT) @@ -515,7 +521,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 = get_node2(i_col, i_row) if node.has_meta(META_CALLABLE): var conn_prev = node.get_meta(META_CALLABLE) @@ -632,8 +638,8 @@ func get_row_text(i_row: int) -> Array: ## [param i_begin] - Начальный индекс колонки начиная с которого установить новые значения.[br] ## [i]Ячейки ряда должны иметь свойство[/i] [param text] func set_row_text(i_row: int, row: Array, i_begin: int = 0, key_format: String = NODE_KEY_FORMAT) -> void: - assert((i_begin >= 0) and (i_begin < columns)) - assert((columns - i_begin) >= row.size()) + _assert((i_begin >= 0) and (i_begin < columns)) + _assert((columns - i_begin) >= row.size()) for i_col in row.size(): var key: = get_node_key(key_format, i_col + i_begin, i_row) nodes[key].text = row[i_col] @@ -661,7 +667,7 @@ func get_row(i_row: int) -> Array: ## Возвращает прямоугольник [param rect] занимаемый ячейкой в ряду [param i_row] и колонке [param i_col]. ## [param key_format] - Формат ключа ячейки func get_node_rect(i_col: int, i_row: int, rect: Array, key_format: String = NODE_KEY_FORMAT) -> void: - assert(rect.size() >= 4, 'ошибка: мало элементов для возврата результата') + _assert(rect.size() >= 4, 'мало элементов для возврата результата') var key: = get_node_key(key_format, i_col, i_row) var cell = nodes[key] rect[0] = cell.position.x @@ -673,7 +679,7 @@ func get_node_rect(i_col: int, i_row: int, rect: Array, key_format: String = NOD ## Возвращает прямоугольник [param rect] занимаемый рядом [param i_row].[br] ## [param key_format] - Формат ключа ячейки func get_row_rect(i_row: int, rect: Array, key_format: String = NODE_KEY_FORMAT) -> void: - assert(rect.size() >= 4, 'ошибка: мало элементов для возврата результата') + _assert(rect.size() >= 4, 'мало элементов для возврата результата') var cell0 = nodes[get_node_key(key_format, 0, i_row)] var cell1 = nodes[get_node_key(key_format, columns - 1, i_row)] rect[0] = cell0.position.x + scroll_adj.x