diff --git a/game/engines/default/engine/class.lua b/game/engines/default/engine/class.lua index 48fe9c2..ef9c18a 100644 --- a/game/engines/default/engine/class.lua +++ b/game/engines/default/engine/class.lua @@ -47,15 +47,15 @@ function inherit(base, ...) if #ifs == 0 then setmetatable(c, {__index=base}) else - for i, _if in ipairs(ifs) do - for k, e in pairs(_if) do - if k ~= "init" and k ~= "_NAME" and k ~= "_M" and k ~= "_PACKAGE" and k ~= "new" then - c[k] = e --- print(("caching interface value %s (%s) from %s to %s"):format(k, tostring(e), _if._NAME, c._NAME)) - end + local handler = function(self, k) + local result = base[k] + if result ~= nil then return result end + for i, _ik in ipairs(ifs) do + result = _ik[k] + if result ~= nil then return result end end end - setmetatable(c, {__index=base}) + setmetatable(c, {__index=handler}) end c.new = function(...) local obj = {}