require "Player.rb"

# Keeps a list of all the connections
# and the players associated with them
class Players
	private_class_method :new
	
	@@players = {}
	
	def Players.add(player,clientConnection)
		@@players[player] = clientConnection
	end	
	
	# Remove a connection
	def Players.remove(clientConnection)
		@@players.each_pair do |key,value|
			begin				
				if (value == clientConnection)
					@@players.delete(key)
					return
				end
			end
		end	
	end	
	
	# This is for serialization
	def Players.removeAllPlayersFromRooms()
		@@players.each_pair do |key,value|
			room = key.Parent
			room.removeItem(key)
		end	
	end
	
	# This is for serialization
	def Players.putAllPlayersBackInRooms()
		@@players.each_pair do |key,value|
			key.parent.container.push(key)
		end	
	end	
	
	# Find a player by his name
	def Players.find(player)
		
		if (player == nil)
			return nil
		end
	
		playerLower = player.downcase
		@@players.each_pair do |key,value|
			if (key.name.downcase == playerLower)
				return key
			end
		end
		return nil
	end	
	
	def Players.getPlayers()
		return @@players.keys
	end	
	
	def Players.getConnection(player)
		return @@players[player]
	end
	
end