From 016c68edfc0db5b10f2cf7297d477307cdfbadd2 Mon Sep 17 00:00:00 2001 From: Fang Date: Tue, 19 Sep 2023 10:50:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=B7=AC=E7=82=BC=E5=8A=A0?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/module/runes/runes_const.lua | 2 +- lua/app/module/runes/runes_manager.lua | 7 ++++--- lua/app/ui/hero/runes_info_comp.lua | 9 +++++++++ lua/app/userdata/runes/runes_data.lua | 19 ++++++++----------- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/lua/app/module/runes/runes_const.lua b/lua/app/module/runes/runes_const.lua index 9484a9a8..e031715c 100644 --- a/lua/app/module/runes/runes_const.lua +++ b/lua/app/module/runes/runes_const.lua @@ -35,6 +35,6 @@ RunesConst.FAKE_DATA_COUNT = 10 -- 自动淬炼频率n次/s RunesConst.AUTO_INTERVAL = 10 -- 同步服务器数据间隔,单位s -RunesConst.SYNC_INTERVAL = 10 +RunesConst.SYNC_INTERVAL = 1 return RunesConst \ No newline at end of file diff --git a/lua/app/module/runes/runes_manager.lua b/lua/app/module/runes/runes_manager.lua index aab15abc..b675ad41 100644 --- a/lua/app/module/runes/runes_manager.lua +++ b/lua/app/module/runes/runes_manager.lua @@ -55,12 +55,13 @@ end --1、玩家手动停止(停止) --2、材料不够(停止) --3、自动次数用完(同步已执行次数,继续请求自动数据) -function RunesManager:reqSyncQuenching(isEnd) +--4、同步(仅同步已执行次数) +function RunesManager:reqSyncQuenching(isEnd, onlySyncTime) if self.isSyncQuenching then return end 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 function RunesManager:rspSyncQuenching(result) @@ -70,7 +71,7 @@ function RunesManager:rspSyncQuenching(result) self.isAutoQuenching = false end 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()) end diff --git a/lua/app/ui/hero/runes_info_comp.lua b/lua/app/ui/hero/runes_info_comp.lua index d5fc1fe5..739577f8 100644 --- a/lua/app/ui/hero/runes_info_comp.lua +++ b/lua/app/ui/hero/runes_info_comp.lua @@ -8,6 +8,10 @@ function RunesInfoComp:onClose() self.baseObject:unscheduleGlobal(self.autoSid) self.autoSid = nil end + if self.autoSyncSid then + self.baseObject:unscheduleGlobal(self.autoSyncSid) + self.autoSyncSid = nil + end end function RunesInfoComp:init() @@ -101,6 +105,10 @@ function RunesInfoComp:refresh() self.baseObject:unscheduleGlobal(self.autoSid) self.autoSid = nil end + if self.autoSyncSid then + self.baseObject:unscheduleGlobal(self.autoSyncSid) + self.autoSyncSid = nil + end if ModuleManager.RunesManager:isInAutoQuenching() then self:startAutoQuenching() @@ -289,6 +297,7 @@ function RunesInfoComp:startAutoQuenching() self.tempMaterialCount = DataManager.RunesData:getMaterialCount() 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 -- 结束自动淬炼 diff --git a/lua/app/userdata/runes/runes_data.lua b/lua/app/userdata/runes/runes_data.lua index 046e4775..28750ce4 100644 --- a/lua/app/userdata/runes/runes_data.lua +++ b/lua/app/userdata/runes/runes_data.lua @@ -192,13 +192,7 @@ end -- 获取锻造材料个数 function RunesData:getMaterialCount() - local count = 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 + return DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_RUNES) end -- 是否可以一键铸造 @@ -294,7 +288,7 @@ function RunesData:getRandomGrids() return self.fakeGrids[math.random(GConst.RunesConst.FAKE_DATA_COUNT)] end --- 获取当前已执行的自动淬炼次数 +-- 获取本次同步已执行的自动淬炼次数 function RunesData:getExecutedAutoCount() return self.executedAutoCount end @@ -306,11 +300,12 @@ end -- 自动淬炼次数增加 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) - else - self.executedAutoCount = self.executedAutoCount + 1 end end @@ -327,6 +322,7 @@ end function RunesData:onGetAutoQuenchingDataSuccess(heroId, count, isCountEnd) self.autoHeroId = heroId self.autoTotalCount = count + self.executedTotalAutoCount = 0 self.executedAutoCount = 0 self.isCountEnd = isCountEnd @@ -338,6 +334,7 @@ function RunesData:onAutoQuenchingSuccess(level, exp, grids) self.level = level self.exp = exp self.runes[self:getAutoHeroId()]:updateGrids(grids) + self.executedAutoCount = 0 self:setDirty() end