自动淬炼加同步

This commit is contained in:
Fang 2023-09-19 10:50:56 +08:00
parent b955b1c4bf
commit 016c68edfc
4 changed files with 22 additions and 15 deletions

View File

@ -35,6 +35,6 @@ RunesConst.FAKE_DATA_COUNT = 10
-- 自动淬炼频率n次/s -- 自动淬炼频率n次/s
RunesConst.AUTO_INTERVAL = 10 RunesConst.AUTO_INTERVAL = 10
-- 同步服务器数据间隔单位s -- 同步服务器数据间隔单位s
RunesConst.SYNC_INTERVAL = 10 RunesConst.SYNC_INTERVAL = 1
return RunesConst return RunesConst

View File

@ -55,12 +55,13 @@ end
--1、玩家手动停止停止 --1、玩家手动停止停止
--2、材料不够停止 --2、材料不够停止
--3、自动次数用完同步已执行次数继续请求自动数据 --3、自动次数用完同步已执行次数继续请求自动数据
function RunesManager:reqSyncQuenching(isEnd) --4、同步仅同步已执行次数
function RunesManager:reqSyncQuenching(isEnd, onlySyncTime)
if self.isSyncQuenching then if self.isSyncQuenching then
return return
end end
self.isSyncQuenching = true self.isSyncQuenching = true
self:sendMessage(ProtoMsgType.FromMsgEnum.RuneQuenchingAutoSyncReq, {count = DataManager.RunesData:getExecutedAutoCount(), isEnd = isEnd}, {}, self.rspSyncQuenching, BIReport.ITEM_GET_TYPE.RUNES_AUTO_QUENCHING) self:sendMessage(ProtoMsgType.FromMsgEnum.RuneQuenchingAutoSyncReq, {count = DataManager.RunesData:getExecutedAutoCount(), isEnd = isEnd, onlySyncTime = onlySyncTime}, {}, self.rspSyncQuenching, BIReport.ITEM_GET_TYPE.RUNES_AUTO_QUENCHING, onlySyncTime)
end end
function RunesManager:rspSyncQuenching(result) function RunesManager:rspSyncQuenching(result)
@ -70,7 +71,7 @@ function RunesManager:rspSyncQuenching(result)
self.isAutoQuenching = false self.isAutoQuenching = false
end end
if result.err_code == GConst.ERROR_STR.SUCCESS then if result.err_code == GConst.ERROR_STR.SUCCESS then
if not result.reqData.isEnd then if not result.reqData.isEnd and not result.reqData.onlySyncTime then
-- 同步已执行次数,继续请求自动数据 -- 同步已执行次数,继续请求自动数据
ModuleManager.RunesManager:reqAutoQuenching(DataManager.RunesData:getAutoHeroId()) ModuleManager.RunesManager:reqAutoQuenching(DataManager.RunesData:getAutoHeroId())
end end

View File

@ -8,6 +8,10 @@ function RunesInfoComp:onClose()
self.baseObject:unscheduleGlobal(self.autoSid) self.baseObject:unscheduleGlobal(self.autoSid)
self.autoSid = nil self.autoSid = nil
end end
if self.autoSyncSid then
self.baseObject:unscheduleGlobal(self.autoSyncSid)
self.autoSyncSid = nil
end
end end
function RunesInfoComp:init() function RunesInfoComp:init()
@ -101,6 +105,10 @@ function RunesInfoComp:refresh()
self.baseObject:unscheduleGlobal(self.autoSid) self.baseObject:unscheduleGlobal(self.autoSid)
self.autoSid = nil self.autoSid = nil
end end
if self.autoSyncSid then
self.baseObject:unscheduleGlobal(self.autoSyncSid)
self.autoSyncSid = nil
end
if ModuleManager.RunesManager:isInAutoQuenching() then if ModuleManager.RunesManager:isInAutoQuenching() then
self:startAutoQuenching() self:startAutoQuenching()
@ -289,6 +297,7 @@ function RunesInfoComp:startAutoQuenching()
self.tempMaterialCount = DataManager.RunesData:getMaterialCount() self.tempMaterialCount = DataManager.RunesData:getMaterialCount()
self.autoSid = self.baseObject:scheduleGlobal(function() self:autoQuenching() end, 1 / GConst.RunesConst.AUTO_INTERVAL) self.autoSid = self.baseObject:scheduleGlobal(function() self:autoQuenching() end, 1 / GConst.RunesConst.AUTO_INTERVAL)
self.autoSyncSid = self.baseObject:scheduleGlobal(function() ModuleManager.RunesManager:reqSyncQuenching(false, true) end, GConst.RunesConst.SYNC_INTERVAL)
end end
-- 结束自动淬炼 -- 结束自动淬炼

View File

@ -192,13 +192,7 @@ end
-- 获取锻造材料个数 -- 获取锻造材料个数
function RunesData:getMaterialCount() function RunesData:getMaterialCount()
local count = DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_RUNES) return DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_RUNES)
if ModuleManager.RunesManager:isInAutoQuenching() then
return count - (self:getExecutedAutoCount() * self:getRunes(self.autoHeroId):getMaterialCostNum())
end
return count
end end
-- 是否可以一键铸造 -- 是否可以一键铸造
@ -294,7 +288,7 @@ function RunesData:getRandomGrids()
return self.fakeGrids[math.random(GConst.RunesConst.FAKE_DATA_COUNT)] return self.fakeGrids[math.random(GConst.RunesConst.FAKE_DATA_COUNT)]
end end
-- 获取当前已执行的自动淬炼次数 -- 获取本次同步已执行的自动淬炼次数
function RunesData:getExecutedAutoCount() function RunesData:getExecutedAutoCount()
return self.executedAutoCount return self.executedAutoCount
end end
@ -306,11 +300,12 @@ end
-- 自动淬炼次数增加 -- 自动淬炼次数增加
function RunesData:onAutoQuenchingOnce() function RunesData:onAutoQuenchingOnce()
if self.executedAutoCount >= self.autoTotalCount then self.executedTotalAutoCount = self.executedTotalAutoCount + 1
self.executedAutoCount = self.executedAutoCount + 1
if self.executedTotalAutoCount >= self.autoTotalCount then
-- 剩余自动次数不足,同步并请求数据 -- 剩余自动次数不足,同步并请求数据
ModuleManager.RunesManager:reqSyncQuenching(self.isCountEnd) ModuleManager.RunesManager:reqSyncQuenching(self.isCountEnd)
else
self.executedAutoCount = self.executedAutoCount + 1
end end
end end
@ -327,6 +322,7 @@ end
function RunesData:onGetAutoQuenchingDataSuccess(heroId, count, isCountEnd) function RunesData:onGetAutoQuenchingDataSuccess(heroId, count, isCountEnd)
self.autoHeroId = heroId self.autoHeroId = heroId
self.autoTotalCount = count self.autoTotalCount = count
self.executedTotalAutoCount = 0
self.executedAutoCount = 0 self.executedAutoCount = 0
self.isCountEnd = isCountEnd self.isCountEnd = isCountEnd
@ -338,6 +334,7 @@ function RunesData:onAutoQuenchingSuccess(level, exp, grids)
self.level = level self.level = level
self.exp = exp self.exp = exp
self.runes[self:getAutoHeroId()]:updateGrids(grids) self.runes[self:getAutoHeroId()]:updateGrids(grids)
self.executedAutoCount = 0
self:setDirty() self:setDirty()
end end