diff --git a/pqcli/__main__.py b/pqcli/__main__.py index dce2e13..a3522bf 100644 --- a/pqcli/__main__.py +++ b/pqcli/__main__.py @@ -1,25 +1,20 @@ -import pickle from pathlib import Path import xdg -from pqcli.mechanic import Roster +from pqcli.roster import Roster from pqcli.ui import Ui SAVE_PATH = Path(xdg.XDG_CONFIG_HOME) / "pqcli" / "save.dat" def main() -> None: - if SAVE_PATH.exists(): - roster = pickle.loads(SAVE_PATH.read_bytes()) - else: - roster = Roster() + roster = Roster.load(SAVE_PATH) try: Ui(roster).run() finally: - SAVE_PATH.parent.mkdir(parents=True, exist_ok=True) - SAVE_PATH.write_bytes(pickle.dumps(roster)) + roster.save(SAVE_PATH) if __name__ == "__main__": diff --git a/pqcli/mechanic.py b/pqcli/mechanic.py index 923e472..57a35ac 100644 --- a/pqcli/mechanic.py +++ b/pqcli/mechanic.py @@ -757,14 +757,6 @@ def monster_task( return KillTask(f"Executing {result}", duration, monster=monster) -class Roster: - def __init__(self) -> None: - self.players: T.List[Player] = [] - - def add_player(self, player: Player) -> None: - self.players.append(player) - - class StatsBuilder: def __init__(self) -> None: self.history: T.List[Stats] = [] diff --git a/pqcli/roster.py b/pqcli/roster.py new file mode 100644 index 0000000..6429ad0 --- /dev/null +++ b/pqcli/roster.py @@ -0,0 +1,23 @@ +import pickle +import typing as T +from pathlib import Path + +from pqcli.mechanic import Player + + +class Roster: + def __init__(self) -> None: + self.players: T.List[Player] = [] + + def add_player(self, player: Player) -> None: + self.players.append(player) + + @staticmethod + def load(path: Path) -> "Roster": + if path.exists(): + return pickle.loads(path.read_bytes()) + return Roster() + + def save(self, path: Path) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_bytes(pickle.dumps(self)) diff --git a/pqcli/ui/__init__.py b/pqcli/ui/__init__.py index cc3b5e4..fe3edd3 100644 --- a/pqcli/ui/__init__.py +++ b/pqcli/ui/__init__.py @@ -2,7 +2,7 @@ import typing as T import urwid -from pqcli.mechanic import Roster +from pqcli.roster import Roster from pqcli.ui.exit_view import ExitView from pqcli.ui.new_game_view import NewGameView from pqcli.ui.roster_view import RosterView diff --git a/pqcli/ui/roster_view.py b/pqcli/ui/roster_view.py index 026d993..3fea595 100644 --- a/pqcli/ui/roster_view.py +++ b/pqcli/ui/roster_view.py @@ -2,7 +2,7 @@ import typing as T import urwid -from pqcli.mechanic import Roster +from pqcli.roster import Roster from pqcli.ui.button import MenuButton