Przeglądaj źródła

Merge pull request #22 from NielsOverkamp/rejoin-game

Rejoin game
NielsOverkamp 5 lat temu
rodzic
commit
362fbf7f04
3 zmienionych plików z 17 dodań i 6 usunięć
  1. 14 3
      game.py
  2. 2 2
      option.py
  3. 1 1
      webserver.py

+ 14 - 3
game.py

@@ -24,11 +24,22 @@ class Game(object):
         self.current_player = None
         self.current_dealer = None
 
-    def join_player(self, name):
-        player = Player(name=name)
+    def join_player(self, name, color=None):
+        if color is not None:
+            color_player = next((p for p in self.players if p.color == color and p.Name is None), None)
+            if color_player is not None:
+                color_player.name = name
+                return color_player
+
+        player = Player(None, name)
         self.players.append(player)
         player.state = StateCode.PICK_COLOR
-        self.set_pick_color_state()
+
+        if color is not None:
+            self.pick_color(player, color)
+        else:
+            self.set_pick_color_state()
+
         return player
 
     def unjoin_player(self, player):

+ 2 - 2
option.py

@@ -30,8 +30,8 @@ class Option(object):
     
         return \
             self.code == other.code and \
-            self.color == other.color and \
-            self.card == other.card
+            self.color in [None, other.color] and \
+            self.card in [None, other.card]
 
 
 if __name__ == "__main__":

+ 1 - 1
webserver.py

@@ -130,7 +130,7 @@ async def handler(websocket, path):
                     option.user_name = users[0]
                     users.append(users[0])
                     users.remove(users[0])
-                player = game.join_player(option.user_name)
+                player = game.join_player(option.user_name, option.color)
                 player.game_code = game_code
                 sockets[game_code].append((player, websocket))
                 await notify(sockets[game_code])