local ServerBaseData = class("ServerBaseData") function ServerBaseData:ctor(...) self.data = {} self.data.__parent = self local innerData = nil innerData = { __index = function (t, key) return innerData[key] end, __newindex = function (t, key, value) innerData[key] = value end } setmetatable(self.data, innerData) end function ServerBaseData:_loadLocalData() local data = LocalData:getString("ServerBaseData_" .. self.__cname, "") local innerData = getmetatable(self.data) local dataObj = nil if data and data ~= "" then dataObj = json.decode(data) end for k, v in pairs(innerData) do innerData[k] = nil end if dataObj then for k, v in pairs(dataObj) do innerData[k] = v end end end function ServerBaseData:_loadNewPlayerData() local innerData = getmetatable(self.data) for k, v in pairs(innerData) do innerData[k] = nil end local dataObj = self:getNewPlayerData() if dataObj then for k, v in pairs(dataObj) do innerData[k] = v end end end function ServerBaseData:getNewPlayerData() return nil end function ServerBaseData:getCloneData() local cloneData = {} local function _copy(object) if type(object) ~= "table" then return object elseif cloneData[object] then return cloneData[object] end local newObject = {} cloneData[object] = newObject for key, value in pairs(object) do newObject[_copy(key)] = _copy(value) end return newObject end local innerData = getmetatable(self.data) return _copy(innerData) end function ServerBaseData:clone() end return ServerBaseData