def randomize(self): clean_iso_path = self.settings["clean_iso_path"].strip() output_folder = self.settings["output_folder"].strip() self.settings["clean_iso_path"] = clean_iso_path self.settings["output_folder"] = output_folder self.ui.clean_iso_path.setText(clean_iso_path) self.ui.output_folder.setText(output_folder) if not os.path.isfile(clean_iso_path): QMessageBox.warning(self, "Clean ISO path not specified", "Must specify path to clean your Wind Waker ISO (USA).") return if not os.path.isdir(output_folder): QMessageBox.warning(self, "No output folder specified", "Must specify a valid output folder for the randomized files.") return seed = self.settings["seed"] seed = self.sanitize_seed(seed) if not seed: self.generate_seed() seed = self.settings["seed"] self.settings["seed"] = seed self.ui.seed.setText(seed) self.update_settings() options = OrderedDict() for option_name in OPTIONS: options[option_name] = self.get_option_value(option_name) options["custom_colors"] = self.custom_colors permalink = self.ui.permalink.text() max_progress_val = 20 self.progress_dialog = RandomizerProgressDialog("Randomizing", "Initializing...", max_progress_val) if self.bulk_test: failures_done = 0 total_done = 0 for i in range(100): temp_seed = str(i) try: rando = Randomizer(temp_seed, clean_iso_path, output_folder, options, permalink=permalink, cmd_line_args=self.cmd_line_args) randomizer_generator = rando.randomize() while True: next_option_description, options_finished = next(randomizer_generator) if options_finished == -1: break except Exception as e: stack_trace = traceback.format_exc() error_message = "Error on seed " + temp_seed + ":\n" + str(e) + "\n\n" + stack_trace print(error_message) failures_done += 1 total_done += 1 print("%d/%d seeds failed" % (failures_done, total_done)) try: rando = Randomizer(seed, clean_iso_path, output_folder, options, permalink=permalink, cmd_line_args=self.cmd_line_args) except TooFewProgressionLocationsError as e: error_message = str(e) self.randomization_failed(error_message) return except Exception as e: stack_trace = traceback.format_exc() error_message = "Randomization failed with error:\n" + str(e) + "\n\n" + stack_trace self.randomization_failed(error_message) return self.randomizer_thread = RandomizerThread(rando) self.randomizer_thread.update_progress.connect(self.update_progress_dialog) self.randomizer_thread.randomization_complete.connect(self.randomization_complete) self.randomizer_thread.randomization_failed.connect(self.randomization_failed) self.randomizer_thread.start()
metavar='NUM', help= 'Set the minimum catch rate allowed for a Pokémon, from 1 to 255. Pokémon whose catch rate is higher ' 'will keep their original catch rates. (Default: 90)') add_enable_disable_argument( parser_patches_group, 'fix-name-casing', default=config.fix_name_casing, help_enable= 'If the ISO region is either USA or Europe, change the Pokémon, item, etc. names to use ' 'natural casing rather than all uppercase.', help_disable='Do not alter name casing.') args = parser.parse_args() if args.in_place is not True and args.output_path is None or args.output_path == args.iso_path: print( 'Error: a unique output path must be specified when not randomizing in-place!' ) exit(1) logging.basicConfig(level=getattr(logging, args.loglevel.upper()), format="{asctime} [{levelname}] {message}", style='{') config.configure(working_dir=os.path.dirname(__file__), **vars(args)) randomizer = Randomizer(rom_path=args.iso_path, output_path=args.output_path, in_place=args.in_place) randomizer.randomize()