コード例 #1
0
 def from_json_dict(cls, json_dict: dict) -> "LayoutConfiguration":
     return LayoutConfiguration(
         trick_level_configuration=TrickLevelConfiguration.from_json(
             json_dict["trick_level"]),
         damage_strictness=LayoutDamageStrictness(
             json_dict["damage_strictness"]),
         sky_temple_keys=LayoutSkyTempleKeyMode(
             json_dict["sky_temple_keys"]),
         elevators=LayoutElevators(json_dict["elevators"]),
         starting_location=StartingLocation.from_json(
             json_dict["starting_location"]),
         available_locations=AvailableLocationsConfiguration.from_json(
             json_dict["available_locations"]),
         major_items_configuration=MajorItemsConfiguration.from_json(
             json_dict["major_items_configuration"],
             default_prime2_item_database(),
         ),
         ammo_configuration=AmmoConfiguration.from_json(
             json_dict["ammo_configuration"],
             default_prime2_item_database(),
         ),
         translator_configuration=TranslatorConfiguration.from_json(
             json_dict["translator_configuration"]),
         hints=HintConfiguration.from_json(json_dict["hints"]),
         beam_configuration=BeamConfiguration.from_json(
             json_dict["beam_configuration"]),
         skip_final_bosses=json_dict["skip_final_bosses"],
         energy_per_tank=json_dict["energy_per_tank"],
         split_beam_ammo=json_dict["split_beam_ammo"],
     )
コード例 #2
0
def _create_config_for(game: RandovaniaGame, replace: dict):
    with get_data_path().joinpath("item_database", game.value, "default_state",
                                  "major-items.json").open() as open_file:
        default_data = json.load(open_file)

    default_data["minimum_random_starting_items"] = 0
    default_data["maximum_random_starting_items"] = 0

    data = copy.deepcopy(default_data)
    for field, value in replace.items():
        for key, inner_value in value.items():
            data[field][key] = inner_value

    return (
        MajorItemsConfiguration.from_json(default_data, game),
        MajorItemsConfiguration.from_json(data, game),
    )
コード例 #3
0
def test_decode(config_with_data):
    # Setup
    data, expected = config_with_data

    # Run
    decoder = BitPackDecoder(data)
    result = MajorItemsConfiguration.bit_pack_unpack(decoder, {})

    # Assert
    assert result == expected
コード例 #4
0
def test_decode_prime2(prime2_data):
    # Setup
    data, default, expected = prime2_data

    # Run
    decoder = BitPackDecoder(data)
    result = MajorItemsConfiguration.bit_pack_unpack(decoder,
                                                     {"reference": default})

    # Assert
    assert result == expected
コード例 #5
0
def get_default_major_items_configurations() -> MajorItemsConfiguration:
    item_database = default_prime2_item_database()

    with get_data_path().joinpath("item_database", "default_state", "major-items.json").open() as open_file:
        data = json.load(open_file)

    return MajorItemsConfiguration(
        items_state={
            item_database.major_items[name]: MajorItemState.from_json(state_data)
            for name, state_data in data["items_state"].items()
        }
    )
コード例 #6
0
def _config_with_data(request):
    with get_data_path().joinpath("item_database", "default_state", "major-items.json").open() as open_file:
        data = json.load(open_file)

    data["progressive_suit"] = True
    data["progressive_grapple"] = True
    data["progressive_launcher"] = True
    data["minimum_random_starting_items"] = True
    data["maximum_random_starting_items"] = True

    for field, value in request.param["replace"].items():
        for key, inner_value in value.items():
            data[field][key] = inner_value

    return request.param["encoded"], MajorItemsConfiguration.from_json(data, default_prime2_item_database())
コード例 #7
0
 def from_json_dict(cls, json_dict: dict) -> "LayoutConfiguration":
     return cls.from_params(
         trick_level_configuration=TrickLevelConfiguration.from_json(json_dict["trick_level"]),
         sky_temple_keys=LayoutSkyTempleKeyMode(json_dict["sky_temple_keys"]),
         elevators=LayoutElevators(json_dict["elevators"]),
         starting_location=StartingLocation.from_json(json_dict["starting_location"]),
         randomization_mode=RandomizationMode(json_dict["randomization_mode"]),
         major_items_configuration=MajorItemsConfiguration.from_json(
             json_dict["major_items_configuration"],
             default_prime2_item_database(),
         ),
         ammo_configuration=AmmoConfiguration.from_json(
             json_dict["ammo_configuration"],
             default_prime2_item_database(),
         ),
         translator_configuration=TranslatorConfiguration.from_json(json_dict["translator_configuration"]),
         hints=HintConfiguration.from_json(json_dict["hints"]),
         split_beam_ammo=json_dict["split_beam_ammo"],
     )
コード例 #8
0
def test_migrate_from_v1(option):
    old_data = {
        "version": 1,
        "options": {
            "hud_memo_popup_removal": True,
            "game_files_path": None,
            "show_advanced_options": False,
            "display_generate_help": True,
            "include_menu_mod": False,
            "layout_logic": "normal",
            "layout_mode": "standard",
            "layout_sky_temple_keys": "randomized",
            "layout_elevators": "vanilla",
            "layout_item_loss": "enabled",
            "quantity_for_pickup": {}
        }
    }

    # Run
    new_data = randovania.interface_common.persisted_options.get_persisted_options_from_data(
        old_data)
    option.load_from_persisted_options(new_data, False)

    # Assert
    expected_data = {
        "last_changelog_displayed": "0.22.0",
        "patcher_configuration": {
            "menu_mod": False,
            "warp_to_start": True,
            "pickup_model_style": "all-visible",
            "pickup_model_data_source": "etm",
        },
        "layout_configuration": {
            "trick_level": {
                "global_level": "normal",
                "specific_levels": {},
            },
            "sky_temple_keys": 9,
            "starting_resources": "vanilla-item-loss-enabled",
            "starting_location": "ship",
            "elevators": "vanilla",
            "randomization_mode": "full",
            "major_items_configuration":
            MajorItemsConfiguration.default().as_json,
            "ammo_configuration": AmmoConfiguration.default().as_json,
            "translator_configuration": {
                "translator_requirement": {},
                "fixed_gfmc_compound": True,
                "fixed_torvus_temple": True,
                "fixed_great_temple": True,
            },
            "hints": {},
            "split_beam_ammo": True,
        },
        "cosmetic_patches": {
            "disable_hud_popup": True,
            "speed_up_credits": True,
            "open_map": True,
            "pickup_markers": True,
        }
    }
    assert new_data == expected_data