diff --git a/pydantic_character_builder.py b/pydantic_character_builder.py new file mode 100644 index 0000000..cd6ec29 --- /dev/null +++ b/pydantic_character_builder.py @@ -0,0 +1,46 @@ +import pathlib + +from pydantic import BaseModel + +from base_mob import BaseMob + + +class CharacterModel(BaseModel): + name: str + max_pv: int + current_pv: int + strength: int + protection: int + speed: int + mob_type: int + + +def save_character(character: BaseMob) -> str: + filename = f'{character.name}.json' + character_model = CharacterModel( + name=character.name, + max_pv=character.max_pv, + current_pv=character.current_pv, + strength=character.strength, + protection=character.protection, + speed=character.speed, + mob_type=character.mob_type + ) + pathlib.Path(filename).write_text( + data=character_model.model_dump_json(indent=4), + encoding='utf-8' + ) + return filename + + +def load_character(name: str) -> BaseMob | None: + json_data = pathlib.Path(f'{name}.json').read_text(encoding='utf-8') + character_model = CharacterModel.model_validate_json(json_data) + return BaseMob( + name=character_model.name, + max_pv=character_model.max_pv, + strength=character_model.strength, + protection=character_model.protection, + speed=character_model.speed, + mob_type=character_model.mob_type, + )