From 0b5c84931a5c74a0fe4b1c040e5120fe4ebc090a Mon Sep 17 00:00:00 2001 From: ZhangBiao Date: Mon, 13 Dec 2021 18:25:35 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=91=BD=E6=A0=BC=E3=80=91=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../~Lua/Modules/Gem/GemManager.lua | 79 ++++++++++--------- .../Popup/RewardGemSingleShowPopup.lua | 16 ---- 2 files changed, 43 insertions(+), 52 deletions(-) diff --git a/Assets/ManagedResources/~Lua/Modules/Gem/GemManager.lua b/Assets/ManagedResources/~Lua/Modules/Gem/GemManager.lua index 7b59f66015..1ad31a5fa8 100644 --- a/Assets/ManagedResources/~Lua/Modules/Gem/GemManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Gem/GemManager.lua @@ -120,7 +120,9 @@ function this.OneKeyConpound() for i = 1, #configMap do local bool,money = this.DoCircle1(finalList,configMap[i]) totalMoney = totalMoney + money + -- LogGreen("money:"..tostring(totalMoney)) if not bool then + -- LogError("合成结束") break end end @@ -139,6 +141,7 @@ function this.DoCircle1(finalList,data) local lastGNum = 0--上一次合成出来的数量 for i = 1, #data do local tempData = data[i] + -- LogPink("Id:"..tostring(tempData.Id).." lastGNum:"..tostring(lastGNum)) --判断是否满级 if not tempData.NextGem or tempData.NextGem == 0 then if lastGNum > 0 then @@ -146,11 +149,12 @@ function this.DoCircle1(finalList,data) end else local bagGemNum = BagManager.GetTotalItemNum(tempData.Id)--当前背包中数量 - local curGemNum = 0--当前可使用合成的该等级的Gem数量 + local curGemNum = lastGNum--当前可使用合成的该等级的Gem数量 if bagGemNum > 0 then - curGemNum = bagGemNum + lastGNum--当前一共拥有命石数量(包括已经合成的数量) + curGemNum = bagGemNum + curGemNum--当前一共拥有命石数量(包括已经合成的数量) end --命石不足 + -- LogGreen("curGemNum:"..tostring(curGemNum)) if curGemNum < tempData.UpgradeNum then if lastGNum > 0 then finalList[tempData.Id] = lastGNum @@ -182,6 +186,7 @@ function this.DoCircle1(finalList,data) end end lastGNum = curGemNum/tempData.UpgradeNum + -- LogGreen("lastGNum:"..tostring(lastGNum)) end end end @@ -196,43 +201,45 @@ function this.FastConpound(id) local configMap = this.GetMapOfBagData()[gemConfig[id].Type] local selectLv = gemConfig[id].Level local lastGNum = 0--上一次合成出来的数量 - if selectLv == 1 then - finalList[id] = BagManager.GetTotalItemNum(id) > 0 and 1 or 0 - local num = BagManager.isBagPanel and 1 or 0 - if BagManager.GetTotalItemNum(id) > num then - finalList[id] = 1 - lastGNum = 1 - else - finalList[id] = 0 - lastGNum = 1 - end - else - for i = 1, #configMap do - local tempData = configMap[i] - if tempData.Level >= selectLv then + + for i = 1, #configMap do + local tempData = configMap[i] + local bagGemNum = BagManager.GetTotalItemNum(tempData.Id)--当前背包中数量 + if tempData.Level == selectLv then + if lastGNum > 0 then break end - local bagGemNum = BagManager.GetTotalItemNum(tempData.Id)--当前背包中数量 - local curGemNum = 0--当前可使用合成的该等级的Gem数量 - if bagGemNum > 0 then - curGemNum = bagGemNum + lastGNum--当前一共拥有命石数量(包括已经合成的数量) - end - if curGemNum < tempData.UpgradeNum then--如果出现断层,需要清空数据继续遍历, - finalList = {} - totalMoney = 0 - lastGNum = 0 + local num = BagManager.isBagPanel and 0 or 1 + if bagGemNum < tempData.UpgradeNum - num then + break else - local needNum = this.DoCircle2(tempData.Type,tempData.Level,selectLv) - local remainNum = curGemNum%tempData.UpgradeNum - if curGemNum > needNum then - remainNum = curGemNum - needNum - curGemNum = needNum - end - lastGNum = math.floor(curGemNum/tempData.UpgradeNum) - totalMoney = totalMoney + lastGNum*tempData.UpgradeCost[2] - if bagGemNum > 0 then - finalList[tempData.Id] = bagGemNum - remainNum - end + lastGNum = 1 + finalList[tempData.Id] = 1 + break + end + end + if tempData.Level > selectLv then + break + end + local curGemNum = 0--当前可使用合成的该等级的Gem数量 + if bagGemNum > 0 then + curGemNum = bagGemNum + lastGNum--当前一共拥有命石数量(包括已经合成的数量) + end + if curGemNum < tempData.UpgradeNum then--如果出现断层,需要清空数据继续遍历, + finalList = {} + totalMoney = 0 + lastGNum = 0 + else + local needNum = this.DoCircle2(tempData.Type,tempData.Level,selectLv) + local remainNum = curGemNum%tempData.UpgradeNum + if curGemNum > needNum then + remainNum = curGemNum - needNum + curGemNum = needNum + end + lastGNum = math.floor(curGemNum/tempData.UpgradeNum) + totalMoney = totalMoney + lastGNum*tempData.UpgradeCost[2] + if bagGemNum > 0 then + finalList[tempData.Id] = bagGemNum - remainNum end end end diff --git a/Assets/ManagedResources/~Lua/Modules/Popup/RewardGemSingleShowPopup.lua b/Assets/ManagedResources/~Lua/Modules/Popup/RewardGemSingleShowPopup.lua index 27a50604f7..c95bb043ac 100644 --- a/Assets/ManagedResources/~Lua/Modules/Popup/RewardGemSingleShowPopup.lua +++ b/Assets/ManagedResources/~Lua/Modules/Popup/RewardGemSingleShowPopup.lua @@ -80,14 +80,6 @@ function RewardGemSingleShowPopup:BindEvent() UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.GemCompound,itemSid,this.position,function () self:ClosePanel() end) - -- local bool,list,money = GemManager.FastConpound(itemSid) - -- LogGreen("bool:"..tostring(bool)) - -- if bool then - -- LogGreen("money:"..tostring(money)) - -- for key, value in pairs(list) do - -- LogGreen("key:"..tostring(key).." value:"..tostring(value)) - -- end - -- end elseif this.openType == 1 then--背包中 local num = BagManager.GetTotalItemNum(itemSid) if num/gemConfig[itemSid].UpgradeNum >= 2 then @@ -98,14 +90,6 @@ function RewardGemSingleShowPopup:BindEvent() UIManager.OpenPanel(UIName.GeneralBigPopup,GENERAL_POPUP_TYPE.GemCompound,itemSid,nil,function () self:ClosePanel() end) - local bool2,list,money,bool = GemManager.FastConpound(itemSid) - LogGreen("bool:"..tostring(bool)) - if bool and bool2 then - LogGreen("money:"..tostring(money)) - for key, value in pairs(list) do - LogGreen("key:"..tostring(key).." value:"..tostring(value)) - end - end end end end)