def getServerStatuses(self): # Refresh all server status when a player/server connects if self.factory.rooms.has_key("RoomServer") == True: roomServers = self.factory.rooms["RoomServer"].players message = MessageWriter() message.writeByte(settings.MESSAGE_REQUEST_SERVER_STATUS) for roomServer in roomServers: roomServer.protocol.sendMessage(message)
def connectionMade(self): print "Connected to Lobby Server" # Send message to join the RoomServer room messagePlayerConnected = MessageWriter() messagePlayerConnected.writeByte(settings.MESSAGE_PLAYER_CONNECTED) messagePlayerConnected.writeInt(0) messagePlayerConnected.writeString("RoomServer") self.sendMessage(messagePlayerConnected) self.factory.setClient(self)
def flushLobby(self): if self.factory.rooms.has_key("Lobby") == True and self.factory.rooms.has_key("RoomServer") == True: print "flushing lobby" roomServers = self.factory.rooms["RoomServer"].players players = self.factory.rooms["Lobby"].players openRoom = "Create" for player in players: # First check which server has an open room (highest priority) playerServer = None for roomServer in roomServers: openRooms = len(roomServer.rooms) if openRooms > 0: playerServer = roomServer print "Open room called " + roomServer.name openRoom = roomServer.rooms[0].roomID break # Next pass, see which server has the LEAST amount of players # This fires only if there are no open rooms if playerServer == None: playerServer = roomServers[0] for roomServer in roomServers: playerCount = roomServer.playerCount if playerCount < playerServer.playerCount: playerServer = roomServer # At this point playerServer should not be None print "Sending player to " + playerServer.address+ " " + str(playerServer.port) + " room " + openRoom message = MessageWriter() message.writeByte(settings.MESSAGE_PLAYER_JOIN_ROOMSERVER) message.writeInt(playerServer.port) message.writeString(playerServer.address) message.writeString(openRoom) player.protocol.sendMessage(message) # after we are done, update the server status self.getServerStatuses()
def getServerStatus(self): rooms = self.rooms openRoomCount = 0 for roomKey in self.rooms: room = self.rooms[roomKey] if room.open == True: openRoomCount = openRoomCount + 1 message = MessageWriter() message.writeByte(settings.MESSAGE_SERVER_STATUS) try: message.writeInt(self.playerCount) except: print "Unable to write player count " + str(self.playerCount) message.writeInt(0) message.writeInt(openRoomCount) for roomKey in self.rooms: room = self.rooms[roomKey] if room.open == True: message.writeString(room.roomID) message.writeInt(len(room.players)) return message