예제 #1
0
	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)
예제 #2
0
	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)
예제 #3
0
	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()
예제 #4
0
	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