Пример #1
0
def create_permalink(args):
    from randovania.layout.permalink import Permalink
    from randovania.layout.generator_parameters import GeneratorParameters
    from randovania.interface_common.preset_manager import PresetManager

    game: RandovaniaGame = RandovaniaGame(args.game)
    preset_manager = PresetManager(None)
    presets = []
    for preset_name in args.preset_name:
        versioned = preset_manager.included_preset_with(game, preset_name)
        if versioned is None:
            raise ValueError(
                "Unknown included preset '{}' for game {}. Valid options are: {}"
                .format(preset_name, game.long_name, [
                    preset.name
                    for preset in preset_manager.included_presets.values()
                    if preset.game == game
                ]))
        presets.append(versioned.get_preset())

    seed = args.seed_number
    if seed is None:
        seed = random.randint(0, 2**31)

    return Permalink.from_parameters(
        GeneratorParameters(
            seed,
            spoiler=not args.race,
            presets=presets,
        ), )
Пример #2
0
def test_generate_new_seed(tab, preset_manager, mocker):
    # Setup
    mock_randint: MagicMock = mocker.patch("random.randint", return_value=12341234)

    tab.window.create_preset_tree = MagicMock()
    tab.window.create_preset_tree.current_preset_data = preset_manager.default_preset
    tab.generate_seed_from_permalink = MagicMock()

    spoiler = MagicMock(spec=bool)
    retries = MagicMock(spec=int)

    # Run
    tab._generate_new_seed(spoiler, retries)

    # Assert
    tab.generate_seed_from_permalink.assert_called_once_with(
        Permalink.from_parameters(
            GeneratorParameters(
                seed_number=12341234,
                spoiler=spoiler,
                presets=[preset_manager.default_preset.get_preset()],
            )
        ), retries=retries
    )
    mock_randint.assert_called_once_with(0, 2 ** 31)
Пример #3
0
    def _generate_new_seed(self, spoiler: bool, retries: Optional[int] = None):
        preset = self._current_preset_data
        num_players = self.window.num_players_spin_box.value()

        self.generate_seed_from_permalink(Permalink.from_parameters(GeneratorParameters(
            seed_number=random.randint(0, 2 ** 31),
            spoiler=spoiler,
            presets=[preset.get_preset()] * num_players,
        )), retries=retries)