本文主要是介绍00003 不思议迷宫.0005:是数据同步吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
00003 不思议迷宫.0005:是数据同步吗?
搜索dataCollector,发现全部都在DungeonVerifyM.luac中,这让事情简单不少。经过排查,我发现了这么一个函数:
-- 同步结果回服务器
function packResultData(mappingList)
local dbase= {};
-- 删掉没用的数据
local filter= { "attackerInfo", "hitRound", "attrib_coding","current_dungeon", };
for _,attrib in pairs(filter) do
dataCollector[attrib] = nil;
end
-- 先抛出一个事件,其他地方关注做一些动作
EventMgr.fire(event.START_PACK_VERIFY_RESULT);
-- 已经没有的数据
for k, _ inpairs(dataCollector) do
if notME.user.dbase:query(k) then
dataCollector[k] = nil;
end
end
-- temp下的也干掉,不然会造成死循环
dataCollector.temp = nil;
-- 道具统计需要另外处理
dataCollector.daily_item_stat = nil;
-- TODO: 装备
dataCollector.equipments = ME.user.equipments;
-- 把randomCursor移到temp下
local temp ={};
localrandomCursor = dataCollector.randomCursor or {};
dataCollector.randomCursor = nil;
temp["random_cursor"] = to_mapping(randomCursor);
--temp["dungeon_class_stat"] = DungeonStatM.queryTempStat();
-- 先把整数过滤出来,整理成差值
localdifferent = {};
local backUp= ME.user.dbaseBackUp or {}; -- 备份的数据
for k, v inpairs(dataCollector) do
localoriginal = backUp[k] or 0; -- 原始数据
-- 整数
iftype(v) == "number" and type(original) == "number" then
-- 以差值的形式
different[k] = v - original;
print("key = " .. k .. " v = " .. v .. " ".. original);
dataCollector[k] = nil;
else
-- 其他
dbase[k] = v;
end
end
-- 收取dbase
for k, v inpairs(collectDbase(backUp, dbase)) do
dbase[k]= v;
end
-- 专门解析一遍
packDbase(dbase, mappingList);
-- TODO: 会造成深度拷贝,这里需要优化
dbase =toMapping(dbase);
-- 对比原始数据和现在的数据,得到被删除的数据
localdropDatas = {};
for path, _in pairs(backUp) do
local v= ME.user.dbase:query(path);
if not vthen
-- 被删除掉了,记录下来
table.insert(dropDatas, path);
end
end
-- 2. 道具,也是用差值的形式
local items= { __mapping = 1, };
for classId,_ in pairs(itemCollector) do
localoriginal = ME.user.itemBackUp[classId] or 0;
items[classId] = ItemM.getAmount(ME.user, classId) - original;
end
-- TODO:buff_data收集
local cfg =BuffDataM.getBuffDataCfg();
localbuffData = { __mapping = 1 };
for attrib,_ in pairs(cfg) do
这篇关于00003 不思议迷宫.0005:是数据同步吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!