summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CAO/Client.py2
-rw-r--r--CAO/Game.py31
-rw-r--r--webapp/cao-mobile.js2
3 files changed, 33 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
diff --git a/webapp/cao-mobile.js b/webapp/cao-mobile.js
index c733df8..acac68e 100644
--- a/webapp/cao-mobile.js
+++ b/webapp/cao-mobile.js
@@ -51,6 +51,8 @@ $(document).ready(function() {
switch (state) {
case 'waiting_judge':
$become_judge.show();
+ $white_cards.attr('disabled', true);
+ $white_cards.addClass('read-only');
break;
case 'waiting_designation':
if (cao.is_judge()) {