Example #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"],
     )
Example #2
0
def get_default_ammo_configurations() -> AmmoConfiguration:
    item_database = default_prime2_item_database()

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

    return AmmoConfiguration.from_json(data, item_database)
Example #3
0
def _config_with_data(request):
    game: RandovaniaGame = request.param["game"]

    with get_data_path().joinpath("item_database", game.value, "default_state",
                                  "ammo.json").open() as open_file:
        default_data = json.load(open_file)

    default = AmmoConfiguration.from_json(default_data, game)
    data = copy.deepcopy(default_data)

    for key, value in request.param.get("items_state", {}).items():
        data["items_state"][key] = value

    for key, value in request.param.get("maximum_ammo", {}).items():
        data["maximum_ammo"][key] = value

    config = AmmoConfiguration.from_json(data, game)
    return request.param["encoded"], config, default
def test_decode(config_with_data):
    # Setup
    data, expected = config_with_data

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

    # Assert
    assert result == expected
def _config_with_data(request):
    with get_data_path().joinpath("item_database", "default_state",
                                  "ammo.json").open() as open_file:
        data = json.load(open_file)

    for key, value in request.param.get("items_state", {}).items():
        data["items_state"][key] = value

    for key, value in request.param.get("maximum_ammo", {}).items():
        data["maximum_ammo"][key] = value

    return request.param["encoded"], AmmoConfiguration.from_json(
        data, default_prime2_item_database())
 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"],
     )
Example #7
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