do
local path = minetest.get_modpath('sorcery');
local get = function(unit)
return dofile(path .. '/' .. unit .. '.lua')
end
sorcery = {
path = path;
load = function(name) get(name) end;
unit = function(ns,sfx)
local target
if ns then
sorcery[ns] = {}
target = sorcery[ns]
else target = sorcery end
return function(lst)
for i=1,#lst do
target[lst[i]] = get(((ns and ns..'/') or '')..lst[i])
end
end
end;
}
end
-- unfortunately we can't just iterate over the files
-- and load them automatically, as interdependencies
-- exist (especially with /lib) and we need to be very
-- careful about the order they're loaded in
sorcery.unit('data') {'ui'}
sorcery.unit('lib') {
-- convenience
'str', 'node';
-- serialization
'marshal', 'json';
-- data structures
'tbl', 'class';
-- wrappers
'color', 'image', 'ui';
}
sorcery.unit() { 'compat', 'matreg' }
sorcery.unit('data') {
'compat';
'affinities'; 'gods';
'enchants', 'spells';
'gems', 'metals';
'potions', 'oils', 'greases',
'draughts', 'elixirs',
'philters', 'extracts';
'register';
}
for _,u in pairs {
'ores'; 'gems'; 'leylines';
'potions'; 'infuser'; 'altar'; 'wands';
'tools'; 'enchanter'; 'harvester';
'metallurgy-hot', 'metallurgy-cold';
'entities'; 'recipes'; 'coins';
'interop'; 'tnodes'; 'forcefield';
} do sorcery.load(u) end