def _load_options(): logger.info("Loading up user preferences code...") from randovania.interface_common.options import Options from randovania.gui.lib import startup_tools, theme logger.info("Restoring saved user preferences...") options = Options.with_default_data_dir() if not startup_tools.load_options_from_disk(options): raise SystemExit(1) logger.info("Creating user preferences folder") import dulwich.repo import dulwich.errors try: dulwich.repo.Repo(options.user_dir) except dulwich.errors.NotGitRepository: options.user_dir.mkdir(parents=True, exist_ok=True) dulwich.repo.Repo.init(options.user_dir) theme.set_dark_theme(options.dark_mode) from randovania.layout.preset_migration import VersionedPreset for old_preset in options.data_dir.joinpath("presets").glob( "*.randovania_preset"): old_preset.rename( old_preset.with_name( f"{old_preset.stem}.{VersionedPreset.file_extension()}")) logger.info("Loaded user preferences") return options
def show_main_window(app: QApplication, args): options = Options.with_default_data_dir() options.load_from_disk() from randovania.gui.main_window import MainWindow main_window = MainWindow(options, getattr(args, "preview", False)) app.main_window = main_window main_window.show()
def show_tracker(app: QApplication, args): from randovania.gui.tracker_window import TrackerWindow options = Options.with_default_data_dir() options.load_from_disk() app.tracker = TrackerWindow(options.layout_configuration) app.tracker.show()
def _debug_main(): import randovania randovania.setup_logging("DEBUG", None) from randovania.interface_common.options import Options options = Options.with_default_data_dir() convert_prime2_pickups( options.internal_copies_path.joinpath("prime2", "contents"), Path("converted"), print)
def show_tracker(app: QApplication, args): from randovania.gui.tracker_window import TrackerWindow options = Options.with_default_data_dir() if not load_options_from_disk(options): raise SystemExit(1) app.tracker = TrackerWindow(options.tracker_files_path, options.selected_preset.layout_configuration) app.tracker.show()
def show_main_window(app: QApplication, args): options = Options.with_default_data_dir() if not load_options_from_disk(options): raise SystemExit(1) from randovania.gui.main_window import MainWindow main_window = MainWindow(options, getattr(args, "preview", False)) app.main_window = main_window main_window.show() main_window.request_new_data()
def _load_options(): from randovania.interface_common.options import Options from randovania.gui.lib import startup_tools, theme options = Options.with_default_data_dir() if not startup_tools.load_options_from_disk(options): raise SystemExit(1) theme.set_dark_theme(options.dark_mode) from randovania.layout.preset_migration import VersionedPreset for old_preset in options.data_dir.joinpath("presets").glob("*.randovania_preset"): old_preset.rename(old_preset.with_name(f"{old_preset.stem}.{VersionedPreset.file_extension()}")) return options
def prime_asset_provider(input_iso: Path) -> AssetProvider: opt = Options.with_default_data_dir() opt.load_from_disk() result = nod.open_disc_from_image(os.fspath(input_iso)) if result is None: raise RuntimeError(f"Invalid prime1 iso: {input_iso}") part = result[0].get_data_partition() pak_file_names: List[str] = [ name for name in part.files() if name.lower().endswith(".pak") ] pak_files = [ part.read_file(name) for name in pak_file_names ] return AssetProvider(Game.PRIME, pak_file_names, pak_files)
def show_main_window(app: QApplication, is_preview: bool): options = Options.with_default_data_dir() preset_manager = PresetManager(options.data_dir) for old_preset in options.data_dir.joinpath("presets").glob( "*.randovania_preset"): old_preset.rename( old_preset.with_name( f"{old_preset.stem}.{Preset.file_extension()}")) if not load_options_from_disk(options): raise SystemExit(1) if not load_user_presets(preset_manager): raise SystemExit(2) from randovania.gui.main_window import MainWindow main_window = MainWindow(options, preset_manager, is_preview) app.main_window = main_window main_window.show() main_window.request_new_data()
async def randomize_command_logic_async(args): from randovania.games.patcher_provider import PatcherProvider from randovania.generator import generator from randovania.interface_common.cosmetic_patches import CosmeticPatches from randovania.interface_common.players_configuration import PlayersConfiguration from randovania.layout.layout_description import LayoutDescription from randovania.layout.permalink import Permalink from randovania.interface_common.options import Options def status_update(s): if args.verbose: print(s) if args.permalink is not None: permalink = Permalink.from_str(args.permalink) layout_description = await generator.generate_and_validate_description( permalink=permalink, status_update=status_update, validate_after_generation=True, ) else: layout_description = LayoutDescription.from_file(args.log_file) cosmetic_patches = CosmeticPatches( disable_hud_popup=args.disable_hud_popup, speed_up_credits=args.speed_up_credits) players_config = PlayersConfiguration(args.player_index, {i: f"Player {i + 1}" for i in range(layout_description.permalink.player_count)}) preset = layout_description.permalink.get_preset(players_config.player_index) game_files_path = Options.with_default_data_dir().game_files_path patcher_provider = PatcherProvider() patcher = patcher_provider.patcher_for_game(preset.game) patch_data = patcher.create_patch_data(layout_description, players_config, cosmetic_patches) patcher.patch_game(args.input_file, args.output_file, patch_data, game_files_path, lambda x, _: status_update(x))
def echoes_asset_provider() -> AssetProvider: internal_copies_path = Options.with_default_data_dir().internal_copies_path paks_path = internal_copies_path.joinpath("prime2", "contents", "files") all_files = list(paks_path.glob("*.pak")) return AssetProvider(Game.ECHOES, all_files)