import logging import os from typing import Dict, List from swiftstory.exception import UnsupportedLanguage from swiftstory.game import Game from swiftstory.cards import Cards class GameManager: def __init__(self): self.langs: Dict[str, dict] = {} for filename in next(os.walk('usr/share/swiftstory/lang'))[1]: self.langs[filename] = {} for lang in self.langs: self.langs[lang]['black_cards'] = Cards.get_black_cards(lang) self.langs[lang]['white_cards'] = Cards.get_white_cards(lang) self.langs[lang]['games'] = {} def join_game(self, game_name, lang): if self.langs.get(lang) is None: raise UnsupportedLanguage(lang) games = self.langs[lang]['games'] black_cards = self.langs[lang]['black_cards'] white_cards = self.langs[lang]['white_cards'] game = games.get(game_name) if game is None: logging.info("Starting new game: %s (lang: %s)", game_name, lang) game = games[game_name] = Game(white_cards, black_cards) return game