Example #1
0
 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()
Example #2
0
        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()