def calculate(self): if not self.initializing: gear_stats = self.gear_page.get_stats() my_stats = stats.Stats(**gear_stats) my_talents = rogue_talents.RogueTalents(*self.talents_page.get_talents()) my_glyphs = rogue_glyphs.RogueGlyphs(*self.talents_page.get_glyphs()) my_buffs = buffs.Buffs(*self.buffs_page.current_buffs) my_race = race.Race(self.settings_page.get_race()) test_settings = settings.Settings(self.settings_page.get_cycle(), response_time = self.settings_page.get_response_time()) self.error_area.SetLabel("") try: calculator = AldrianasRogueDamageCalculator(my_stats, my_talents, my_glyphs, my_buffs, my_race, test_settings) dps = calculator.get_dps() ep_values = calculator.get_ep() dps_breakdown = calculator.get_dps_breakdown() except exceptions.InvalidInputException as e: self.error_area.SetLabel(str(e)) self.dps.SetValue(str(dps)) self.ep_box.SetValue(self.pretty_print(ep_values)) self.dps_breakdown.SetValue(self.pretty_print(dps_breakdown)) for stat in GearPage.stats: tc = getattr(self, stat) tc.SetValue(str(gear_stats[stat]))
test_settings = settings.Settings(test_cycle, response_time=1) # Set up level test_level = 85 # Build a DPS object. calculator = AldrianasRogueDamageCalculator(test_stats, test_talents, test_glyphs, test_buffs, test_race, test_settings, test_level) # Compute EP values. ep_values = calculator.get_ep() # Compute talents ranking main_tree_talents_ranking, off_tree_talents_ranking = calculator.get_talents_ranking() # Compute DPS Breakdown. dps_breakdown = calculator.get_dps_breakdown() total_dps = sum(entry[1] for entry in dps_breakdown.items()) def pretty_print(dict_list): max_len = 0 for i in dict_list: dict_values = i.items() if max_len < max(len(entry[0]) for entry in dict_values): max_len = max(len(entry[0]) for entry in dict_values) print '-' * (max_len + 15) for i in dict_list: dict_values = i.items() dict_values.sort(key=lambda entry: entry[1], reverse=True) for value in dict_values: print value[0] + ':' + ' ' * (max_len - len(value[0])), value[1]