def route(self,conn, addr, data): action = data['action'] if action == 'disconnect': player = self.playersMap[data["playerID"]] if player.roomID: del self.roomsMap[player.roomID] del self.playersMap[data["playerID"]] self.send(conn,True) conn.close() return False elif action == 'register': player = Player(data["name"], addr, conn) print(f"[NEW PLAYER] {player}") self.playersMap[player.playerID] = player self.send(conn, player.playerID) elif action == "createRoom": room = Room(data["name"]) self.roomsMap[room.roomID] = room room.addPlayer(self.playersMap[data["playerID"]]) print(f"[NEW ROOM] {room}") self.send(conn, room.roomID) elif action == "joinToRoom": room = self.roomsMap[data['roomID']] if room: player = self.playersMap[data["playerID"]] result = room.addPlayer(player) if result: player.roomID = room.roomID self.send(room.playerList[0].conn, {'action' : 'startGame'}) else: result = False self.send(conn, result) elif action == "getRoomList": listRoom = [] for room in self.roomsMap.values(): listRoom.append([room.roomName, room.roomID, room.numberOfPlayers]) self.send(conn, listRoom) elif action == 'currentPlayer': room = self.roomsMap[data['roomID']] self.send(conn, [room.currentPlayer.playerName, room.currentPlayer.playerID]) elif action == 'changePlayer': room = self.roomsMap[data['roomID']] room.changePlayer() self.send(room.currentPlayer.conn, {'action' : 'changePlayer'}) return True