Exemplo n.º 1
0
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
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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()
Exemplo n.º 6
0
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()
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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()
Exemplo n.º 10
0
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))
Exemplo n.º 11
0
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)