miduo_client/Assets/ManagedResources/~Lua/misc/GSetClass.lua

55 lines
1.2 KiB
Lua

local mt = {}
function GSetClass(clsName, base)
local cls = {}
base = base or mt
cls.__get__ = {}
cls.__set__ = {}
setmetatable(cls, {__index = base})
cls.clsName = clsName or "default"
cls.base = base
cls.new = function(...)
local cls_instance = {}
-- cls_instance.getset_values = {}
for k,v in pairs(cls) do
cls_instance[k] = v
end
local cls_instance_mt = {
__index = function(t, k)
if cls[k] then
return cls[k]
end
if t.__get__[k] then
return t.__get__[k](t)
-- return t.getset_values[k]
end
-- if string.sub(k, 1, 2) == "__" then
-- local tmpK = string.sub(k, 3, -1)
-- if t.getset_values[tmpK] then
-- return t.getset_values[tmpK]
-- end
-- end
end,
__newindex = function(t, k, v)
if t.__set__[k] then
t.__set__[k](t, v)
-- cls_instance.getset_values[k] = v
return
end
-- if string.sub(k, 1, 2) == "__" then
-- local tmpK = string.sub(k, 3, -1)
-- if t.getset_values[tmpK] then
-- t.getset_values[tmpK] = v
-- end
-- end
rawset(t, k, v)
end
}
setmetatable(cls_instance, cls_instance_mt)
if cls_instance.onCreate then
cls_instance:onCreate(...)
end
return cls_instance
end
return cls
end