function class(classname, superCls)
local cls = {}
cls.__came = classname
if superCls then
for k, v in pairs(super) do
if k ~= "Ctor" then
cls[k] = v
end
end
cls.__superCls = superCls
end
cls.__Init = function(instance, ...)
if cls.__superCls then
cls.__superCls.__Init(instance, ...)
end
if cls.Ctor then
cls.Ctor (instance, ...)
end
end
cls.New = function(...)
local instance = setmetatable({}, cls)
for k, v in pairs(cls) do
instance[k] = v
if type(v) == "function" and not cls["S_"..k] then
rawset(instance, "S_"..k, function(...) return v(instance, ...) end)
end
end
cls.__Init(instance, ...)
return instance
end
return cls
end