|
DefineClass.ZuluModuleDef = { |
|
__parents = { "ModuleDef" }, |
|
} |
|
|
|
local function append(pstr, subs, code) |
|
code = code:gsub("%$%((.-)%)", subs) |
|
pstr:append(code) |
|
end |
|
|
|
function ZuluModuleDef:GenerateGlobalCode(code) |
|
ModuleDef.GenerateGlobalCode(self, code) |
|
local subs = { |
|
class = self.id, |
|
var = self.id:lower(), |
|
member_array = self.DefOwnerMember, |
|
global_map = self.DefGlobalMap, |
|
} |
|
assert(subs.class ~= subs.var) |
|
|
|
append(code, subs, [[ |
|
function $(class)Owner:GetDynamicData(data) |
|
for i, $(var) in ipairs(self.$(member_array)) do |
|
if $(var).ShouldSave == nil or $(var):ShouldSave() then |
|
data.$(member_array) = data.$(member_array) or {} |
|
data.$(member_array)[#data.$(member_array)+1] = data.$(member_array)[#data.$(member_array)+1] or {} |
|
data.$(member_array)[#data.$(member_array)].id = $(var).id |
|
if type($(var).GetDynamicData) == "function" then |
|
$(var):GetDynamicData(data.$(member_array)[#data.$(member_array)]) |
|
end |
|
end |
|
end |
|
end |
|
|
|
function $(class)Owner:SetDynamicData(data) |
|
for i, $(var) in ipairs(data.$(member_array)) do |
|
local obj = $(global_map)[$(var).id]:new() |
|
if type(obj.SetDynamicData) == "function" then |
|
obj:SetDynamicData($(var)) |
|
end |
|
self:Add$(class)(obj) |
|
end |
|
end |
|
|
|
]]) |
|
end |