LoadedObjects = {
	Entities = {},

	Collisions = {},
	Platforms = {},
	Ladders = {},
	Hazards = {}
}

-- level functions
function LoadedObjects.DrawCollisions()
	for _, ladder in pairs(LoadedObjects.Collisions) do
		ladder:Draw(1)
	end

	for _, platform in pairs(LoadedObjects.Platforms) do
		if platform.disable == true  then platform:Draw(2) end
		if platform.disable == false then platform:Draw(1) end
	end

	for _, ladder in pairs(LoadedObjects.Ladders) do
		ladder:Draw(2)
	end

	for _, hazard in pairs(LoadedObjects.Hazards) do
		hazard:Draw(1)
	end
end

-- returns true if theres a collision at that point
function isThereObjectAt(x,y,objectType)
	for _, object in pairs(objectType) do
		if object.disable then
			-- Dont calculate if dissabled
		elseif x >= object.from.x
		and x <= object.to.x
		and y >= object.from.y
		and y <= object.to.y then
			object.isColliding = true
			return true
		end
	end
	return false
end

function isThereCollisionAt(x,y)
	if 	x >= 0 and x < #CollisionTable
	and y >= 0 and y < #CollisionTable[0] then
		return CollisionTable[math.floor(y)][math.floor(x)]
	end
	return false
end

-- flags
function SetCollisionFlags()
	local Check = {
		LoadedObjects.Collisions,
		LoadedObjects.Ladders,
		LoadedObjects.Platforms,
		LoadedObjects.Hazards
	}
	for _, type in pairs(Check) do
		for _, object in pairs(type) do
			object.isColliding = false
		end
	end
	for _, platform in pairs(LoadedObjects.Platforms) do
		if main_Player.pos.y < platform.from.y then
			platform.disable = false
		else
			platform.disable = true
		end
	end
	for _, platform in pairs(LoadedObjects.Hazards) do
		if main_Player.isOnGround then
			platform.disable = true
		else
			platform.disable = false
		end
	end
end
