コード例 #1
0
ファイル: server.py プロジェクト: GitArtur97/PythonGame
    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