View difference between Paste ID: XmFbaK9V and 5ZfZ0a71
SHOW: | | - or go back to the newest paste.
1-
 -- drafter.lua -- stateless approach
1+
 -- drafter.lua -- factory approach
2
3
local drafter = {}
4
5-
function drafter.line(startX, startY, endX, endY, maxLength)
5+
function drafter.line(maxLength)
6-
	local deltaX, deltaY = endX - startX, endY - startY
6+
	return function(startX, startY, endX, endY)
7-
	local requestedLength = math.sqrt(deltaX * deltaX + deltaY * deltaY)
7+
		local deltaX, deltaY = endX - startX, endY - startY
8-
	if requestedLength > maxLength then
8+
		local requestedLength = math.sqrt(deltaX * deltaX + deltaY * deltaY)
9-
		local ratio = maxLength / requestedLength
9+
		if requestedLength > maxLength then
10-
		endX, endY = startX + deltaX * ratio, startY + deltaY * ratio
10+
			local ratio = maxLength / requestedLength
11
			endX, endY = startX + deltaX * ratio, startY + deltaY * ratio
12-
	display.newLine(startX, startY, endX, endY)
12+
		end
13
		display.newLine(startX, startY, endX, endY)
14
	end
15
end
16
17
return drafter