summaryrefslogtreecommitdiff
path: root/CAO
diff options
context:
space:
mode:
Diffstat (limited to 'CAO')
-rw-r--r--CAO/Client.py2
-rw-r--r--CAO/Game.py31
2 files changed, 31 insertions, 2 deletions
diff --git a/CAO/Client.py b/CAO/Client.py
index 03bb68d..2d0bbac 100644
--- a/CAO/Client.py
+++ b/CAO/Client.py
@@ -70,4 +70,4 @@ class Client():
def disconnect(self):
if self.player is not None:
- self.player.client = None
+ self.game.disconnect(self.player)
diff --git a/CAO/Game.py b/CAO/Game.py
index 917c055..63f52eb 100644
--- a/CAO/Game.py
+++ b/CAO/Game.py
@@ -165,7 +165,7 @@ class Game():
p.set_has_played(False)
self.board.recycle_black_card()
- self.judge = None # useful or not ...
+ self.judge = None
for p in self.players:
if p is not player:
@@ -204,3 +204,32 @@ class Game():
return cao_success(self.black_desc[card])
return cao_error('The black card has not been revealed yet')
+
+ def disconnect(self, player):
+ player.client = None
+
+ if self.judge is player:
+ self.board.recycle_black_card()
+ self.judge = None
+
+ for p in self.players:
+ p.send_notification({'op': 'judge_needed'})
+
+ for card, p in self.board.played_cards:
+ idx = p.receive_card(card)
+ card_idx = p.cards[idx]
+ card_desc = self.white_desc[card_idx]
+
+ p.send_notification({
+ 'op': 'received_card',
+ 'content': {
+ 'card': {
+ 'id': idx,
+ 'desc': card_desc,
+ },
+ },
+ })
+ p.set_has_played(False)
+
+ self.board.played_cards = []
+ self.state = self.WAITING_NEW_JUDGE