| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- local UIChipDecomposeTipsCtr = class("UIChipDecomposeTipsCtr", require("UICtrBase"))
- local Decompose_Quality_Tips = 4
- function UIChipDecomposeTipsCtr:Init(view)
- self.view = view
- end
- function UIChipDecomposeTipsCtr:SetData(data)
- self.asyncIdx = 0
- if data == nil then return end
- self.data = data
- self:InitDecomposeDatas()
- end
- function UIChipDecomposeTipsCtr:GetAsyncIdx()
- self.asyncIdx = self.asyncIdx + 1
- return self.asyncIdx
- end
- function UIChipDecomposeTipsCtr:GetData()
- return self.data
- end
- function UIChipDecomposeTipsCtr:OnDispose()
- self.data = nil
- self.view = nil
- self.selected = nil
- self.selectedQuality = nil
- self.decomposeQualityNum = nil
- self.decomposeList = nil
- self.decomposeAwardList = nil
- end
- function UIChipDecomposeTipsCtr:InitDecomposeDatas()
- local ls = self.data[1]
- local selected = self.data[2] or false
- local decomposeQualityNum = {}
- local decomposeList = {}
- local decomposeAwardMap = {}
- local decomposeAwardList = {}
- local selectedQuality = {}
- for i = 1, #ls do
- local chipData = ls[i]
- local num = (selected and chipData.cost or chipData.num)
- local itemCfgData = ManagerContainer.CfgMgr:GetItemById(chipData.cfgId)
- local quality = itemCfgData.Quality
- decomposeQualityNum[quality] = (decomposeQualityNum[quality] or 0) + num
- table.insert(decomposeList, {key = chipData.cfgId, value = num})
- selectedQuality[quality] = true
- local resolve = itemCfgData.Resolve
- if resolve then
- if type(resolve[1]) == 'number' then
- -- 单个
- local itemCfgId = resolve[1]
- local itemNum = resolve[2]
- decomposeAwardMap[itemCfgId] = (decomposeAwardMap[itemCfgId] or 0) + itemNum * num
- else
- for itemCfgId, itemNum in pairs(resolve) do
- decomposeAwardMap[itemCfgId] = (decomposeAwardMap[itemCfgId] or 0) + itemNum * num
- end
- end
- end
- end
- for itemCfgId, itemNum in pairs(decomposeAwardMap) do
- if itemNum > 0 then
- table.insert(decomposeAwardList, {itemCfgId, itemNum})
- end
- end
- table.sort(decomposeAwardList, function(a, b)
- local itemCfgDataA = ManagerContainer.CfgMgr:GetItemById(a[1])
- local itemCfgDataB = ManagerContainer.CfgMgr:GetItemById(b[1])
- if itemCfgDataA.Quality == itemCfgDataB.Quality then
- return a[1] < b[1]
- else
- return itemCfgDataA.Quality > itemCfgDataB.Quality
- end
- end)
- self.selected = selected
- self.decomposeQualityNum = decomposeQualityNum
- self.decomposeList = decomposeList
- self.decomposeAwardList = decomposeAwardList
- self.selectedQuality = selectedQuality
- end
- function UIChipDecomposeTipsCtr:IsSelected()
- return self.selected
- end
- function UIChipDecomposeTipsCtr:GetDecomposeQualityNum(quality)
- return (self.decomposeQualityNum[quality] or 0)
- end
- function UIChipDecomposeTipsCtr:GetDecomposeAwards()
- return self.decomposeAwardList
- end
- function UIChipDecomposeTipsCtr:GetSelectedQuality(quality)
- return self.selectedQuality[quality] or false
- end
- function UIChipDecomposeTipsCtr:SetSelectedQuality(quality, isSelected)
- self.selectedQuality[quality] = isSelected
- end
- --- 在发送分解前的,提示
- ---@return integer(0,不需要提示;1,高品质内容分解提示;2,未选择分解的类型;3;未选择分解碎片)
- function UIChipDecomposeTipsCtr:GetErrorCode()
- local hight = false
- if self:IsSelected() then
- if #self.decomposeList <= 0 then
- return 3
- end
- for quality, num in pairs(self.decomposeQualityNum) do
- if num > 0 and quality >= Decompose_Quality_Tips then
- hight = true
- break
- end
- end
- else
- local num = 0
- for quality, isSelected in pairs(self.selectedQuality) do
- if isSelected then
- num = num + 1
- if quality >= Decompose_Quality_Tips then
- hight = true
- end
- end
- end
- if num <= 0 then
- return 2
- end
- end
- if hight then
- return 1
- end
- return 0
- end
- function UIChipDecomposeTipsCtr:SendDecompose()
- if self:IsSelected() then
- if #self.decomposeList > 0 then
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_CHIP_DECOMPOSE_REQ, {chip_list = self.decomposeList})
- end
- else
- local qualitys = {}
- for quality, isSelected in pairs(self.selectedQuality) do
- if isSelected then
- table.insert(qualitys, quality)
- end
- end
- if #qualitys > 0 then
- ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_HERO_CHIP_DECOMPOSE_REQ, {chip_type_list = qualitys})
- end
- end
- end
- return UIChipDecomposeTipsCtr
|