def cmd_system_params(self, args): try: syst = args[1] if syst not in list(self.systems) + ['all']: raise IndexError except IndexError: print( "В команду system params необходимо передать код интересующей системы" " или all для вывода ТТХ всего корабля") return if syst != 'all': systdata = self.systems[syst] print(node_names[syst] + " " + systdata.get("name")) for param, value in systdata['params'].items(): print(" " * 10 + param_names[param] + ": " + str(value)) else: print("Массогабаритные характеристики корабля:") sdata = [[ node_names[sys], self.systems[sys]['params']['weight'], self.systems[sys]['params']['volume'] * (1 if sys == 'hull' else -1) ] for sys in self.systems.keys()] zdata = list(zip(*sdata)) lst = [["Система", "Масса", "Объем"], '=' ] + sdata + ["=", ["Итого", "sum", "sum"]] table_view(lst)
def cmd_system_params(self, args): try: syst = args[1] if syst not in list(self.systems) + ['all']: raise IndexError except IndexError: print("В команду system params необходимо передать код интересующей системы" " или all для вывода ТТХ всего корабля") return if syst != 'all': self.calc_debuffs(syst) systdata = self.systems[syst] print(systdata) print(node_names[syst] + " " + systdata.get("name")) lst=[["Параметр", "Фактическое значение", "Расчетное значение"], "="] for param, value in systdata['params'].items(): lst.append([param_names[param], systdata['affected'][param], value]) table_view(lst) else: print("Массогабаритные характеристики корабля:") sdata = [ [node_names[sys], self.systems[sys]['params']['weight'], self.systems[sys]['params']['volume'] * (1 if sys == 'hull' else -1) ] for sys in self.systems.keys()] lst = [["Система", "Масса", "Объем"], '='] + sdata + ["=", [ "Итого", "sum", "sum" ]] table_view(lst)
def cmd_system_slots(self): slots = self.count_system_slots() lst = [["Система"] + sorted(slots.keys())] for syst in sorted(self.systems.keys(), key=lambda x: x != 'hull'): lst += [[node_names[syst]] + [slots[detail].get(syst, 0) for detail in lst[0][1:]]] lst += ["="] lst += [["Итого"] + ["sum"] * (len(lst[0]) - 1)] table_view(lst, free_space_right=1) self.check_system_slots(slots)
def cmd_system_vector(self, args): avail = list(self.freq_vectors.keys()) + ['all'] if len(args) == 1: args.append('all') if args[1] == 'hull': print( "Корпус влияет на синхронизацию всех систем, но сам системой не является" ) print( "Введите system vector all для вывода векторов рассихнрона по всем системам, или " "system vector (название системы), чтобы увидеть подробную информацию о ее векторе рассинхрона." ) return if len(args) == 1 or args[1] not in avail: print( "Команде system vector надо указать код системы или all для вывода частотных векторов всех систем" ) return if args[1] == 'all': lst = [["Узел", "Вектор рассинхрона"], "-"] + [[ node_names[syst], self.freq_vectors[syst].get( 'result', self.freq_vectors[syst]['total']) ] for syst in self.freq_vectors.keys()] else: syst = args[1] fv = self.freq_vectors[syst] print(node_names[syst] + ": вектор частот ") lst = [["Система", "Вектор частот"], "-"] + [[ node_names[sys] + ' ' + self.systems[sys].get('name'), self.mask(fv[sys], fv['total']) ] for sys in fv.keys() if sys not in ( 'total', 'correct', 'result')] + ["=", ["Суммарно", fv['total']]] if len(fv.get('correct', '')) > 0: lst += [["Корректировка", fv.get('correct')], ["Итого", fv.get('result')]] table_view(lst)
def cmd_system_vector(self, args): avail = list(self.freq_vectors.keys()) + ['all'] if len(args) == 1 or args[1] not in avail: print("Команде system vector надо указать код системы или all для вывода частотных векторов всех систем") return if args[1] == 'all': lst = [["Система", "Вектор рассинхрона"], "-"] + [ [node_names[syst], self.freq_vectors[syst].get('result', self.freq_vectors[syst]['total'])] for syst in self.freq_vectors.keys() ] else: syst = args[1] fv = self.freq_vectors[syst] print(node_names[syst] + ": вектор частот ") lst = [["Система", "Вектор частот"], "-"] + [ [node_names[sys] + ' ' + self.systems[sys].get('name'), self.mask(fv[sys], fv['total'])] for sys in fv.keys() if sys not in ('total', 'correct', 'result') ] + ["=", ["Суммарно", fv['total']]] if len(fv.get('correct', '')) > 0: lst += [["Корректировка", fv.get('correct')], ["Итого", fv.get('result')]] table_view(lst)
def cmd_system_list(self): data = [["Код", "Система", "Марка"], "=" ] + [[node, name, self.systems[node].get("name")] for node, name in node_names.items()] table_view(data)