Camera = {
	pos = {x = 0, y = 0},
	width = 0,
	height = 0
}

function Camera:followPlayer(player)
	local pos = player.pos
	local room = player:getCollidingAt(pos.x,pos.y,LoadedObjects.Rooms)

	self:positionCenterAt(pos.x, pos.y)

	self:confineTo(room)
end

function Camera:confineTo(box)
	if box == nil then
		--frameDebug("not in a room")
		return
	end
	--frameDebug("in a room")

	local w = self.width/game.scale
	local h = self.height/game.scale

	-- bottom edge
	self.pos.y = math.min(self.pos.y+h, box.to.y)-h
	-- right edge
	self.pos.x = math.min(self.pos.x+w, box.to.x)-w
	-- top edge
	self.pos.y = math.max(self.pos.y, box.from.y)
	-- left edge
	self.pos.x = math.max(self.pos.x, box.from.x)
end

function Camera:confineToLevel()
	self.pos.x = math.max(0,math.min(self.pos.x,LevelData.Width-self.width/game.scale))
	self.pos.y = math.max(0,math.min(self.pos.y,LevelData.Height-self.height/game.scale))
end

function Camera:positionCenterAt(x,y)
	self.pos.x = x-self.width/game.scale/2
	self.pos.y = y-self.height/game.scale/2
	--self:ConfineToLevel()
end

function Camera:positionAt(x,y)
	self.pos.x = math.floor((x/self.width)*self.width)
	self.pos.y = math.floor((y/self.height)*self.height)
end
