diff options
Diffstat (limited to 'swiftstory/game_manager.py')
-rw-r--r-- | swiftstory/game_manager.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/swiftstory/game_manager.py b/swiftstory/game_manager.py index da2e5c7..6c2da1f 100644 --- a/swiftstory/game_manager.py +++ b/swiftstory/game_manager.py @@ -8,6 +8,15 @@ from swiftstory.game import Game from swiftstory.cards import Cards +class NoSuchGameError(Exception): + """ Exception to be raised when no game is found matching the criterias. + """ + def __init__(self, message: str = "", game_name: str = "", lang: str = "") -> None: + self.game_name = game_name + self.lang = lang + super().__init__(message) + + @dataclass class LangContainer: """ Container for game ojects in a given language. """ @@ -32,7 +41,10 @@ class GameManager: """ List available languages based on FS. """ return next(os.walk("usr/share/swiftstory/lang"))[1] - def join_game(self, game_name: str, lang: str) -> Game: + def find_by_name(self, game_name: str, lang: str, create=True) -> Game: + """ Find and return the game that matches the name and language + specified. If the game does not exist but create is set to True, a new + game will be created. """ container = self.lang_containers.get(lang) if container is None: raise UnsupportedLanguage(lang) @@ -43,6 +55,9 @@ class GameManager: game = games.get(game_name) + if game is None and not create: + raise NoSuchGameError(game_name=game_name, lang=lang) + if game is None: logging.info("Starting new game: %s (lang: %s)", game_name, lang) |