summaryrefslogtreecommitdiff
path: root/assets.lua
blob: 4994abc0b8857553f77f5af58d2c89644f926203 (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
local M = {}

local loaders = {
	sfx = function(f) return love.audio.newSource(f, "static") end,
	img = love.graphics.newImage,
	shader = love.graphics.newShader,
}

local loaded = {}
function M.load_from(assets_dir)
	if not loaded[assets_dir] then
		local assets = {}
		loaded[assets_dir] = assets
		for k, loader in pairs(loaders) do
			local dir = assets_dir..'/'..k..'/'
			assets[k] = {}
			for _, file in ipairs(love.filesystem.getDirectoryItems(dir)) do
				if love.filesystem.getInfo(dir..file).type == "file" then
					local name = file:match "(.+)%.[^%.]+$" or file
					assets[k][name] = assert(loader(dir..file))
				end
			end
		end
	end
	return loaded[assets_dir]
end

return M