summaryrefslogtreecommitdiff
path: root/viewport.lua
blob: e54c9d8482ffb6a959b13a3b883ef05df15ff23f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
local M = {}

M.width, M.height = 1920, 1080

local dims = {love.graphics.getDimensions()}

function M.scale()
	local sw, sh = unpack(dims)
	local vw, vh = unpack(M)
	local scalex, scaley = sw / vw, sh / vh
	if scalex * vh < sh then
		return scalex
	else
		return scaley
	end
end

function M.offset()
	local sw, sh = unpack(dims)
	local vw, vh = unpack(M)
	local sc = M.scale()
	local x, y = sw / 2 - vw * sc / 2, sh / 2 - vh * sc / 2
	return x, y
end

function M.pos(win_x, win_y)
	local x, y = M.offset()
	local sc = M.scale()
	return (win_x - x) / sc, (win_y - y) / sc
end

function M.origin()
	dims = {love.graphics.getDimensions()}
	M[1], M[2] = M.width, M.height

	love.graphics.origin()
	love.graphics.translate(M.offset())
	love.graphics.scale(M.scale())
end

return M