Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
 def cmd_system_list(self):
     data = [["Код", "Система", "Марка"], "="
             ] + [[node, name, self.systems[node].get("name")]
                  for node, name in node_names.items()]
     table_view(data)