-- Variables:
local Cache = {}
-- Main Module:
local ModuleLoader = {}
function ModuleLoader.Get(Name: string)
local Module = Cache[Name]
if not Module then
warn(`[ModuleLoader]: Module '{Name}' has not been loaded`)
end
return Module
end
function ModuleLoader.Load(List: {
ModuleScript | Folder
})
for _, V in List do
if V:IsA("ModuleScript") then
local Success, Module = pcall(require, V)
if Success then
Cache[V.Name] = Module
if Module.Init then
task.defer(Module.Init, Module)
end
else
warn(`[ModuleLoader]: Failed to load module '{V:GetFullName()}'`)
end
elseif V:IsA("Folder") then
ModuleLoader.Load(V:GetChildren())
end
end
end
return ModuleLoader