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"], )
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), )
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())
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"], )