diff options
Diffstat (limited to 'swiftstory/Client.py')
-rw-r--r-- | swiftstory/Client.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/swiftstory/Client.py b/swiftstory/Client.py new file mode 100644 index 0000000..33b8e4b --- /dev/null +++ b/swiftstory/Client.py @@ -0,0 +1,73 @@ +from swiftstory.Status import error +from swiftstory.Game import Game + +class Client(): + def __init__(self, socket, handler, game_manager): + self.game = None + self.game_manager = game_manager + + self.handler = handler + self.socket = socket + self.player = None + + def join_game(self, game_name, lang): + if self.game is not None: + return error('You are already in a game') + + if lang is None: + lang = 'en' + + game = self.game_manager.join_game(game_name, lang) + # XXX self.game will be assigned by game.try_join() + + if game is None: + return error('Invalid language') + + return game.try_join(self) + + def set_game(self, game): + self.game = game + def set_player(self, player): + self.player = player + + def play_white_card(self, card_id): + if self.game is None: + return error('You have to join a game first') + return self.game.try_play_card(self.player, card_id) + + def pick_black_card(self): + if self.game is None: + return error('You have to join a game first') + return self.game.try_become_judge(self.player) + + def collect_cards(self): + if self.game is None: + error('You have to join a game first') + return self.game.try_collect_cards(self.player) + + def designate_card(self, card_id): + if self.game is None: + return error('You have to join a game first') + return self.game.try_designate_card(self.player, card_id) + + def view_player_cards(self): + if self.game is None: + return error('You have to join a game first') + return self.game.try_view_player_cards(self.player) + + def view_played_cards(self): + if self.game is None: + return error('You have to join a game first') + return self.game.try_view_played_cards(self.player) + + def view_black_card(self): + if self.game is None: + return error('You have to join a game first') + return self.game.try_view_black_card(self.player) + + def send_notification(self, message): + self.socket.send_message(self.handler, message) + + def disconnect(self): + if self.player is not None: + self.game.disconnect(self.player) |