76 lines
1.6 KiB
Lua
76 lines
1.6 KiB
Lua
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 |