mirror of
https://github.com/Keyslam-Group/Concord.git
synced 2025-09-02 12:24:11 -04:00
37 lines
850 B
Lua
37 lines
850 B
Lua
--- Assemblage
|
|
-- An Assemblage is a function that 'makes' an entity something.
|
|
-- It does this by :give'ing or :ensure'ing Components, or by :assemble'ing the Entity.
|
|
|
|
local Assemblage = {}
|
|
Assemblage.__mt = {
|
|
__index = Assemblage,
|
|
}
|
|
|
|
--- Creates a new Assemblage.
|
|
-- @param assemble Function that assembles an Entity
|
|
-- @return A new Assemblage
|
|
function Assemblage.new(assemble)
|
|
local assemblage = setmetatable({
|
|
__assemble = assemble,
|
|
|
|
__isAssemblage = true,
|
|
}, Assemblage.__mt)
|
|
|
|
return assemblage
|
|
end
|
|
|
|
--- Assembles an Entity.
|
|
-- @param e Entity to assemble
|
|
-- @param ... Varargs to pass to the assemble function
|
|
-- @ return self
|
|
function Assemblage:assemble(e, ...)
|
|
self.__assemble(e, ...)
|
|
|
|
return self
|
|
end
|
|
|
|
return setmetatable(Assemblage, {
|
|
__call = function(_, ...)
|
|
return Assemblage.new(...)
|
|
end,
|
|
})
|