summaryrefslogtreecommitdiff
path: root/swiftstory/game_manager.py
blob: a87f67ea79a76949c3d06ba071da12c7044865e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import logging
import os

from swiftstory.exception import UnsupportedLanguage
from swiftstory.game import Game
from swiftstory.cards import Cards


class GameManager:
    def __init__(self):
        self.langs = {}

        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