From 129528ee502bef5e7e2b2f2facb324a72c23879b Mon Sep 17 00:00:00 2001 From: Fang Date: Fri, 15 Sep 2023 15:15:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=A6=E6=96=87=E8=87=AA=E5=8A=A8=E6=B7=AC?= =?UTF-8?q?=E7=82=BC=E4=BF=AE=E6=94=B9=E3=80=81=E7=89=B9=E6=95=88=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/common/bi_report.lua | 1 + lua/app/module/runes/runes_const.lua | 8 ++ lua/app/module/runes/runes_manager.lua | 56 +++++++-- lua/app/ui/hero/hero_detail_ui.lua | 11 ++ lua/app/ui/hero/runes_info_comp.lua | 158 +++++++++++++++++------- lua/app/userdata/runes/runes_data.lua | 125 ++++++++++++++++++- lua/app/userdata/runes/runes_entity.lua | 50 +++++--- 7 files changed, 333 insertions(+), 76 deletions(-) diff --git a/lua/app/common/bi_report.lua b/lua/app/common/bi_report.lua index 472968df..1b723e30 100644 --- a/lua/app/common/bi_report.lua +++ b/lua/app/common/bi_report.lua @@ -167,6 +167,7 @@ BIReport.ITEM_GET_TYPE = { ACT_PVP_RANK_REWARD = "ActPvpRankReward", ACT_PVP_BUY_BOUNTY_LEVEL = "ActPvpBuyBountyLevel", RUNES_QUENCHING = "RuneQuenching", + RUNES_AUTO_QUENCHING = "RuneAutoQuenching", RUNES_GIFT = "RuneGift", FULL_MOON_TASK = "FullMoonTask", FULL_MOON_TASK_PROG_REWARD = "FullMoonTaskProgReward", diff --git a/lua/app/module/runes/runes_const.lua b/lua/app/module/runes/runes_const.lua index 12a4ccec..9484a9a8 100644 --- a/lua/app/module/runes/runes_const.lua +++ b/lua/app/module/runes/runes_const.lua @@ -29,4 +29,12 @@ RunesConst.MAX_SUITS_COUNT = 5 -- 最大符文种类个数 RunesConst.MAX_ATTR_COUNT = 11 + +-- 假数据个数 +RunesConst.FAKE_DATA_COUNT = 10 +-- 自动淬炼频率n次/s +RunesConst.AUTO_INTERVAL = 10 +-- 同步服务器数据间隔,单位s +RunesConst.SYNC_INTERVAL = 10 + 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 67426a1f..aab15abc 100644 --- a/lua/app/module/runes/runes_manager.lua +++ b/lua/app/module/runes/runes_manager.lua @@ -1,5 +1,10 @@ local RunesManager = class("RunesManager", BaseModule) +-- 当前是否处于自动淬炼中 +function RunesManager:isInAutoQuenching() + return self.isAutoQuenching == true +end + -- 锁定和解锁属性栏 function RunesManager:reqChangeLockGrid(heroId, index, isLock) if self.isReqLockChange then @@ -18,17 +23,11 @@ function RunesManager:rspChangeLockGrid(result) end -- 淬炼 -function RunesManager:reqQuenching(heroId, autoCount) - if self.isReqQuenching then - return - end - self.isReqQuenching = true - - self:sendMessage(ProtoMsgType.FromMsgEnum.RuneQuenchingReq, {hero_id = heroId, auto_count = autoCount}, {}, self.rspQuenching, BIReport.ITEM_GET_TYPE.RUNES_QUENCHING) +function RunesManager:reqQuenching(heroId) + self:sendMessage(ProtoMsgType.FromMsgEnum.RuneQuenchingReq, {hero_id = heroId}, {}, self.rspQuenching, BIReport.ITEM_GET_TYPE.RUNES_QUENCHING) end function RunesManager:rspQuenching(result) - self.isReqQuenching = false if result.err_code == GConst.ERROR_STR.SUCCESS then DataManager.RunesData:onQuenchingSuccess(result.level, result.exp, result.reqData.hero_id, result.hero_girds.grids) @@ -40,6 +39,47 @@ function RunesManager:rspQuenching(result) end end +-- 获取自动淬炼数据 +function RunesManager:reqAutoQuenching(heroId) + self:sendMessage(ProtoMsgType.FromMsgEnum.RuneQuenchingAutoReq, {hero_id = heroId}, {}, self.rspAutoQuenching) +end + +function RunesManager:rspAutoQuenching(result) + if result.err_code == GConst.ERROR_STR.SUCCESS then + self.isAutoQuenching = true + DataManager.RunesData:onGetAutoQuenchingDataSuccess(result.reqData.hero_id, result.count, result.stop_with_s) + end +end + +-- 同步淬炼结果,共有四种情况 +--1、玩家手动停止(停止) +--2、材料不够(停止) +--3、自动次数用完(同步已执行次数,继续请求自动数据) +function RunesManager:reqSyncQuenching(isEnd) + 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) +end + +function RunesManager:rspSyncQuenching(result) + self.isSyncQuenching = false + if result.reqData.isEnd then + -- 停止 + self.isAutoQuenching = false + end + if result.err_code == GConst.ERROR_STR.SUCCESS then + if not result.reqData.isEnd then + -- 同步已执行次数,继续请求自动数据 + ModuleManager.RunesManager:reqAutoQuenching(DataManager.RunesData:getAutoHeroId()) + end + DataManager.RunesData:onAutoQuenchingSuccess(result.level, result.exp, result.hero_girds.grids) + else + DataManager.RunesData:onAutoQuenchingFailed() + end +end + function RunesManager:rspUpdate(result) DataManager.RunesData:init(result.rune) end diff --git a/lua/app/ui/hero/hero_detail_ui.lua b/lua/app/ui/hero/hero_detail_ui.lua index dd27a174..8fd96fc1 100644 --- a/lua/app/ui/hero/hero_detail_ui.lua +++ b/lua/app/ui/hero/hero_detail_ui.lua @@ -18,6 +18,12 @@ function HeroDetailUI:onPressBackspace() self:closeUI() end +function HeroDetailUI:onClose() + if self.compRunes then + self.compRunes:onClose() + end +end + function HeroDetailUI:ctor(parmas) self.panelType = parmas.panelType or GConst.HeroConst.PANEL_TYPE.HERO self.formationType = parmas.formationType @@ -228,6 +234,11 @@ function HeroDetailUI:refreshRedPoint() else self.btnArmor:removeRedPoint() end + if DataManager.RunesData:hasRedPoint() then + self.btnRunes:addRedPoint(-55, 0, 0.6) + else + self.btnRunes:removeRedPoint() + end end function HeroDetailUI:showHeroInfo() diff --git a/lua/app/ui/hero/runes_info_comp.lua b/lua/app/ui/hero/runes_info_comp.lua index d7945169..20340b78 100644 --- a/lua/app/ui/hero/runes_info_comp.lua +++ b/lua/app/ui/hero/runes_info_comp.lua @@ -3,6 +3,13 @@ local RunesInfoComp = class("RunesInfoComp", LuaComponent) local LOCK_ICON = "common_lock" local UNLOCK_ICON = "common_lock_1" +function RunesInfoComp:onClose() + if self.autoSid then + self.baseObject:unscheduleGlobal(self.autoSid) + self.autoSid = nil + end +end + function RunesInfoComp:init() local uiMap = self:getUIMap() self.btnHelp = uiMap["runes_info.btn_help"] @@ -22,6 +29,9 @@ function RunesInfoComp:init() self.txAuto = uiMap["runes_info.bottom.btn_auto.tx_auto"] self.txEmpty = uiMap["runes_info.suits.tx_empty"] self.mask = uiMap["runes_info.bottom.mask"] + self.btnAutoEnd = uiMap["runes_info.bottom.btn_auto_end"] + self.txAutoEnd = uiMap["runes_info.bottom.btn_auto_end.tx_end"] + self.suitsNode = uiMap["runes_info.suits"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT) self.suits = {} for i = 1, 3 do self.suits[i] = uiMap["runes_info.suits.item_suit_" .. i] @@ -34,8 +44,9 @@ function RunesInfoComp:init() self.mask:setActive(false) self.txSuit:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_2)) self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_5)) - self.txAuto:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_4)) self.txEmpty:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_23)) + self.txAutoEnd:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_29)) + self.txAuto:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_4)) self.itemMaterial:addClickListener(function() UIManager:showUI("app/ui/runes/runes_source_ui") @@ -51,19 +62,19 @@ function RunesInfoComp:init() GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_27, DataManager.RunesData:getAutoMakeOpenLevel())) return end - if self.autoSid == nil then - local params ={ - content = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_21), - boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL, - showToday = GConst.MESSAGE_BOX_SHOW_TODAY.RUNES_AUTO, - okFunc = function() - self:checkQuenching(true) - end, - } - GFunc.showMessageBox(params) - else - self:endAutoQuenching() - end + local params ={ + content = I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_21), + boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL, + showToday = GConst.MESSAGE_BOX_SHOW_TODAY.RUNES_AUTO, + okFunc = function() + self:checkQuenching(true) + end, + } + GFunc.showMessageBox(params) + end) + self.btnAutoEnd:addClickListener(function() + -- 玩家点击停止自动淬炼 + ModuleManager.RunesManager:reqSyncQuenching(true) end) self.btnUse:addClickListener(function() self:checkQuenching(false) @@ -81,8 +92,70 @@ function RunesInfoComp:setHeroData(heroEntity) self.runesEntity = DataManager.RunesData:getRunes(self.heroEntity:getCfgId()) end -function RunesInfoComp:refresh() +function RunesInfoComp:updateData() + self.exp = self.runesEntity:getExp() +end +function RunesInfoComp:refresh() + if self.autoSid then + self.baseObject:unscheduleGlobal(self.autoSid) + self.autoSid = nil + end + + if ModuleManager.RunesManager:isInAutoQuenching() then + self:startAutoQuenching() + return + elseif self.isAutoQuenching then + -- 结束自动淬炼 + self:endAutoQuenching() + end + + self.txCost:setText(GFunc.getRewardNum(self.runesEntity:getMaterialCost())) + GFunc.centerImgAndTx(self.imgCost, self.txCost) + if DataManager.RunesData:canAutoMake() then + self.spineAuto:playAnim("idle", true, true) + else + self.spineAuto:playAnim("idle2", true, true) + end + + self:refreshLevelExp() + self:refreshSuit() + self:refreshRunes() +end + +-- 自动淬炼刷新 +function RunesInfoComp:autoQuenching() + self.tempExp = self.tempExp + self.tempCostNum + self.tempMaterialCount = self.tempMaterialCount - self.tempCostNum + self.tempLevel = DataManager.RunesData:getLevelByExp(self.tempExp) + + local curCfg = DataManager.RunesData:getLevelConfig()[self.tempLevel] + local nextCfg = DataManager.RunesData:getLevelConfig()[self.tempLevel + 1] + local maxExp = (nextCfg and nextCfg.cost or 0) - (curCfg and curCfg.cost or 0) + if maxExp then + local levelExp = self.tempExp - (curCfg and curCfg.cost or 0) + self.imgProg.value = levelExp / maxExp + self.txProg:setText(levelExp .. "/" .. maxExp) + else + self.imgProg.value = 1 + self.txProg:setText(I18N:getGlobalText(I18N.GlobalConst.STR_MAX)) + end + self.txLevel:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_1, self.tempLevel)) + self.txNum:setText(self.tempMaterialCount) + + self:refreshSuit() + self:refreshRunes() + + if self.tempMaterialCount < self.tempCostNum then + -- 材料不够,结束自动淬炼 + ModuleManager.RunesManager:reqSyncQuenching(true) + else + DataManager.RunesData:onAutoQuenchingOnce() + end +end + +-- 刷新等级经验、道具个数 +function RunesInfoComp:refreshLevelExp() local curExp = DataManager.RunesData:getLevelExp() local maxExp = DataManager.RunesData:getNextLevelTotalExp() if maxExp then @@ -92,21 +165,8 @@ function RunesInfoComp:refresh() self.imgProg.value = 1 self.txProg:setText(I18N:getGlobalText(I18N.GlobalConst.STR_MAX)) end - - if self.autoSid == nil then - if DataManager.RunesData:canAutoMake() then - self.spineAuto:playAnim("idle", true, true) - else - self.spineAuto:playAnim("idle2", true, true) - end - end - self.txNum:setText(DataManager.RunesData:getMaterialCount()) - self.txCost:setText(GFunc.getRewardNum(self.runesEntity:getMaterialCost())) self.txLevel:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_1, DataManager.RunesData:getLevel())) - GFunc.centerImgAndTx(self.imgCost, self.txCost) - - self:refreshSuit() - self:refreshRunes() + self.txNum:setText(DataManager.RunesData:getMaterialCount()) end -- 刷新符文 @@ -121,7 +181,7 @@ function RunesInfoComp:refreshRunes() local txLock = map["tx_lock"] obj:getComponent(GConst.TYPEOF_UNITY_CLASS.ANIMATOR).enabled = false - if DataManager.RunesData:isUnlock(index) then + if ModuleManager.RunesManager:isInAutoQuenching() and index <= DataManager.RunesData:getLevelConfig()[self.tempLevel].grid or DataManager.RunesData:isUnlock(index) then lock:setActive(false) local qlt = self.runesEntity:getGridQuality(index) if qlt then @@ -172,6 +232,8 @@ function RunesInfoComp:refreshSuit() end self.txEmpty:setActive(isEmpty) + + self.suitsNode:RefreshLayout() end -- 检查淬炼 @@ -207,39 +269,45 @@ end function RunesInfoComp:reqQuenching(isAuto) if isAuto then -- 自动淬炼 + self.isAutoQuenching = true self.mask:setActive(true) - self.autoSid = self.baseObject:scheduleGlobal(function() - local cost = self.runesEntity:getMaterialCost() - if not GFunc.checkCost(GFunc.getRewardId(cost), GFunc.getRewardNum(cost), true) then - self:endAutoQuenching() - return - end - ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0) - end, 1 / 3) + self.btnUse:setActive(false) + self.txAuto:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_30)) self.spineAuto:playAnim("attack", true, true) + ModuleManager.RunesManager:reqAutoQuenching(self.heroEntity:getCfgId()) else -- 单次淬炼 - ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId(), 0) + ModuleManager.RunesManager:reqQuenching(self.heroEntity:getCfgId()) end end +-- 开始自动淬炼 +function RunesInfoComp:startAutoQuenching() + self.tempLevel = DataManager.RunesData:getLevel() + self.tempExp = DataManager.RunesData:getExp() + self.tempCostNum = self.runesEntity:getMaterialCostNum() + self.tempMaterialCount = DataManager.RunesData:getMaterialCount() + + self.autoSid = self.baseObject:scheduleGlobal(function() self:autoQuenching() end, 1 / GConst.RunesConst.AUTO_INTERVAL) +end + -- 结束自动淬炼 function RunesInfoComp:endAutoQuenching() + self.isAutoQuenching = false self.mask:setActive(false) - if self.autoSid then - self.baseObject:unscheduleGlobal(self.autoSid) - self.autoSid = nil - end + self.btnUse:setActive(true) + self.txAuto:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_4)) + self.spineAuto:playAnim("idle", true, true) for index, obj in ipairs(self.grids) do - if DataManager.RunesData:isUnlock(index) then + local qlt = self.runesEntity:getGridQuality(index) + if qlt and qlt >= GConst.RunesConst.CHECK_QLT_LOCK and not self.runesEntity:isAttrLock(index) then local animator = obj:getComponent(GConst.TYPEOF_UNITY_CLASS.ANIMATOR) animator.enabled = true -- CS.UnityEngine.Animator.StringToHash("runes_shake") 结果是1132417824 animator:Play(1132417824, -1, 0) end end - self.spineAuto:playAnim("idle", true, true) end return RunesInfoComp \ No newline at end of file diff --git a/lua/app/userdata/runes/runes_data.lua b/lua/app/userdata/runes/runes_data.lua index 5fc7161a..e7bb6d07 100644 --- a/lua/app/userdata/runes/runes_data.lua +++ b/lua/app/userdata/runes/runes_data.lua @@ -72,9 +72,18 @@ function RunesData:getRunes(heroId) return self.runes[heroId] end --- 获取当前等级配置 +-- 是否有红点 +function RunesData:hasRedPoint() + return self:getMaterialCount() > GFunc.getConstIntValue("runes_red_point") +end + +-- 获取等级配置 function RunesData:getLevelConfig() - return ConfigManager:getConfig("runes_level") + if self.RuneCfg == nil then + self.RuneCfg = ConfigManager:getConfig("runes_level") + end + + return self.RuneCfg end -- 获取铸台最大等级 @@ -92,6 +101,25 @@ function RunesData:getLevelExp() return self.exp - (self:getLevelConfig()[self:getLevel()].cost or 0) end +-- 获取总经验值 +function RunesData:getExp() + return self.exp +end + +-- 根据经验获取等级 +function RunesData:getLevelByExp(exp) + local level + for index, value in ipairs(self:getLevelConfig()) do + if exp >= (value.cost or 0) then + level = index + else + return level + end + end + + return level +end + -- 获取到下一档的总经验 function RunesData:getNextLevelTotalExp() local nextExp @@ -144,9 +172,33 @@ function RunesData:getSuitAttr(id, heroType, suitLevel) return nil end +-- 获取锻造材料基础消耗个数 +function RunesData:getMaterialCostBaseNum() + if self.baseCostNum == nil then + self.baseCostNum = GFunc.getConstReward("runes_cost_base").num + end + + return self.baseCostNum +end + +-- 获取锻造材料额外单个锁定消耗个数 +function RunesData:getMaterialCostAddNum() + if self.addCostNum == nil then + self.addCostNum = GFunc.getConstReward("runes_cost_add").num + end + + return self.addCostNum +end + -- 获取锻造材料个数 function RunesData:getMaterialCount() - return DataManager.BagData.ItemData:getItemNumById(GConst.ItemConst.ITEM_ID_RUNES) + 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 end -- 是否可以一键铸造 @@ -219,6 +271,49 @@ function RunesData:onGridLockSuccess(heroId, grids) self:setDirty() end +-- 获取随机一套grids数据 +function RunesData:getRandomGrids() + if self.fakeGrids == nil then + self.fakeGrids = {} + + for i = 1, GConst.RunesConst.FAKE_DATA_COUNT do + self.fakeGrids[i] = {} + for j = 1, GConst.RunesConst.MAX_ATTR_GRID_COUNT do + local grid = {} + grid.quality = math.random(GConst.RunesConst.MAX_QUALITY_COUNT - 2) + grid.attr = math.random(GConst.RunesConst.MAX_ATTR_COUNT) + grid.suit = math.random(GConst.RunesConst.MAX_SUITS_COUNT) + table.insert(self.fakeGrids[i], grid) + end + end + + Logger.logHighlight("轮播假数据:") + Logger.printTable(self.fakeGrids) + end + + return self.fakeGrids[math.random(GConst.RunesConst.FAKE_DATA_COUNT)] +end + +-- 获取当前已执行的自动淬炼次数 +function RunesData:getExecutedAutoCount() + return self.executedAutoCount +end + +-- 获取当前自动淬炼的英雄 +function RunesData:getAutoHeroId() + return self.autoHeroId +end + +-- 自动淬炼次数增加 +function RunesData:onAutoQuenchingOnce() + if self.executedAutoCount >= self.autoTotalCount then + -- 剩余自动次数不足,同步并请求数据 + ModuleManager.RunesManager:reqSyncQuenching(self.isCountEnd) + else + self.executedAutoCount = self.executedAutoCount + 1 + end +end + -- 淬炼成功 function RunesData:onQuenchingSuccess(level, exp, heroId, grids) self.level = level @@ -228,4 +323,28 @@ function RunesData:onQuenchingSuccess(level, exp, heroId, grids) self:setDirty() end +-- 自动淬炼数据获取成功 +function RunesData:onGetAutoQuenchingDataSuccess(heroId, count, isCountEnd) + self.autoHeroId = heroId + self.autoTotalCount = count + self.executedAutoCount = 0 + self.isCountEnd = isCountEnd + + self:setDirty() +end + +-- 自动淬炼成功 +function RunesData:onAutoQuenchingSuccess(level, exp, grids) + self.level = level + self.exp = exp + self.runes[self:getAutoHeroId()]:updateGrids(grids) + + self:setDirty() +end + +-- 自动淬炼失败 +function RunesData:onAutoQuenchingFailed() + self:setDirty() +end + return RunesData \ No newline at end of file diff --git a/lua/app/userdata/runes/runes_entity.lua b/lua/app/userdata/runes/runes_entity.lua index c3270c9a..b2b5d225 100644 --- a/lua/app/userdata/runes/runes_entity.lua +++ b/lua/app/userdata/runes/runes_entity.lua @@ -67,25 +67,20 @@ function RunesEntity:getMaterialCost() return total end --- -- 获取随机符文属性 --- function RunesEntity:getRandomAttr() --- local randomQlt = math.random(GConst.RunesConst.MAX_QUALITY_COUNT - 2) --- local randomAttr = math.random(GConst.RunesConst.MAX_ATTR_COUNT) +-- 获取锻造的材料消耗个数 +function RunesEntity:getMaterialCostNum() + local num = DataManager.RunesData:getMaterialCostBaseNum() --- local cfg = ConfigManager:getConfig("runes_sub")[randomQlt] --- return cfg["attr_"..randomAttr][self:getHeroEntity():getMatchType()] --- end + num = num + (DataManager.RunesData:getMaterialCostAddNum() * self:getAttrLockCount()) --- -- 获取随机套装 --- function RunesEntity:getRandomSuit() --- return math.random(GConst.RunesConst.MAX_SUITS_COUNT) --- end + return num +end -- 获取格子的符文属性 function RunesEntity:getGridAttr(index) if self.grids[index] then - local cfg = ConfigManager:getConfig("runes_sub")[self.grids[index].quality] - local attr = cfg["attr_"..self.grids[index].attr] + local cfg = ConfigManager:getConfig("runes_sub")[self:getGridQuality(index)] + local attr = cfg["attr_"..self:getGridAttrIndex(index)] if attr then return attr[self:getHeroEntity():getMatchType()] end @@ -94,8 +89,24 @@ function RunesEntity:getGridAttr(index) return nil end +-- 获取格子属性下标 +function RunesEntity:getGridAttrIndex(index) + if not self:isAttrLock(index) and ModuleManager.RunesManager:isInAutoQuenching() then + return DataManager.RunesData:getRandomGrids()[index].attr + end + + if self.grids[index] then + return self.grids[index].attr + end + + return nil +end -- 获取格子的品质 function RunesEntity:getGridQuality(index) + if not self:isAttrLock(index) and ModuleManager.RunesManager:isInAutoQuenching() then + return DataManager.RunesData:getRandomGrids()[index].quality + end + if self.grids[index] then return self.grids[index].quality end @@ -105,6 +116,10 @@ end -- 获取格子的套装 function RunesEntity:getGridSuit(index) + if not self:isAttrLock(index) and ModuleManager.RunesManager:isInAutoQuenching() then + return DataManager.RunesData:getRandomGrids()[index].suit + end + if self.grids[index] then return self.grids[index].suit end @@ -115,7 +130,8 @@ end -- 获取套装等级,2件套是lv1,4件套是lv2,没有就是lv0 function RunesEntity:getSuitLevel(index) - local count = self:getSuitCount(index) + local data = table.find(self:getSuitIds(), function(value) return value.id == index end) + local count = data and data.count or 0 if count and count >= 4 then return 2 @@ -127,12 +143,6 @@ function RunesEntity:getSuitLevel(index) return 0 end --- 获取套装个数 -function RunesEntity:getSuitCount(id) - local data = table.find(self:getSuitIds(), function(value) return value.id == id end) - return data and data.count or 0 -end - -- 获取已有的套装id map function RunesEntity:getSuitIds() local typeCount = {}