48 lines
979 B
Lua
48 lines
979 B
Lua
do
|
|
local oldcomp = component
|
|
_G.component = {}
|
|
for k,v in pairs(oldcomp) do
|
|
component[k] = v
|
|
end
|
|
for c,t in oldcomp.list() do
|
|
component[c:sub(1,8)] = oldcomp.proxy(c)
|
|
component[c] = oldcomp.proxy(c)
|
|
if not component[t] then
|
|
component[t] = oldcomp.proxy(c)
|
|
end
|
|
end
|
|
function component.list(filter,exact)
|
|
local ct = {}
|
|
for k,v in pairs(component) do
|
|
if type(v) == "table" then
|
|
if filter then
|
|
if exact then
|
|
if v.type == filter or v.address == filter then
|
|
ct[v.address] = v.type
|
|
end
|
|
else
|
|
if v.type:find(filter) or v.address:find(filter) then
|
|
ct[v.address] = v.type
|
|
end
|
|
end
|
|
else
|
|
ct[v.address] = v.type
|
|
end
|
|
end
|
|
end
|
|
return function(a,b)
|
|
return next(ct,b)
|
|
end
|
|
end
|
|
function component.proxy(k)
|
|
if type(component[k]) == "table" then
|
|
return component[k]
|
|
end
|
|
end
|
|
function component.type(k)
|
|
if type(component[k]) == "table" then
|
|
return component[k].type
|
|
end
|
|
end
|
|
end
|