| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- local UIBagCtr = class("UIBagCtr", require("UICtrBase"))
- function UIBagCtr:Init(view)
- self.view = view
- end
- function UIBagCtr:SetData(data)
- self.asyncIdx = 0
- self:ClearData()
- self.selectPageType = data or self.selectPageType or Enum.BagViewPageType.Item
- if self.filterData == nil then
- self.filterData = {}
- self.filterData.raritySelections = {}
- self.filterData.attrSelections = {}
- self.filterData.typeSelections = {}
- self.isFilter = false
- end
- end
- function UIBagCtr:GetAsyncIdx()
- self.asyncIdx = self.asyncIdx + 1
- return self.asyncIdx
- end
- function UIBagCtr:GetData()
- return self.data
- end
- function UIBagCtr:OnDispose()
- self.data = nil
- self.view = nil
- self:ClearData()
- self.selectPageType = nil
- self.filterData = nil
- self.isFilter = false
- end
- function UIBagCtr:ClearData()
- --self.selectPageType = nil
- self.showDatas = nil
- self.showDataLength = nil
- self.equipDatas = nil
- self.itemDatas = nil
- self.cardDatas = nil
- -- self.row = nil
- -- self.minColumn = nil
- end
- function UIBagCtr:GetBagViewPageType()
- return self.selectPageType
- end
- function UIBagCtr:SetBagViewPageType(bagViewPageType)
- if self.selectPageType == bagViewPageType then
- return false
- end
- self.selectPageType = bagViewPageType
- self:RefreshShowDataType()
- return true
- end
- function UIBagCtr:RefreshShowDataType()
- if self.selectPageType == Enum.BagViewPageType.Equip then
- if not self.equipDatas then
- self.equipDatas = self:RefreshEquipDatas()
- end
- self.showDatas = self.equipDatas
- elseif self.selectPageType == Enum.BagViewPageType.Item then
- if not self.itemDatas then
- self.itemDatas = self:RefreshItemDatas()
- end
- self.showDatas = self.itemDatas
- elseif self.selectPageType == Enum.BagViewPageType.Card then
- if not self.cardDatas then
- self.cardDatas = self:RefreshCardDatas()
- end
- self.showDatas = self.cardDatas
- elseif self.selectPageType == Enum.BagViewPageType.SkillEquip then
- -- if not self.skillEquipDatas then
- self.skillEquipDatas = self:RefreshSkillEquipDatas()
- -- end
- self.showDatas = self.skillEquipDatas
- else
- self.showDatas = nil
- end
- local showDataLength = 0
- if self.showDatas then
- showDataLength = #self.showDatas
- -- if self.row and self.minColumn then
- -- local curColumn = Mathf.Ceil(showDataLength / self.row) + 2
- -- if curColumn < self.minColumn then
- -- curColumn = self.minColumn
- -- end
- -- showDataLength = curColumn * self.row
- -- end
- end
- self.showDataLength = showDataLength
- end
- -- function UIBagCtr:SetGridRowColumn(row, minColumn)
- -- self.row = row
- -- self.minColumn = minColumn
- -- end
- function UIBagCtr:GetShowDataLength()
- return self.showDataLength or 0
- end
- function UIBagCtr:GetShowData(itemIndex)
- return self.showDatas and self.showDatas[itemIndex + 1] or nil
- end
- function UIBagCtr:GetAllShowDatas()
- return self.showDatas
- end
- function UIBagCtr:GetBagViewPageTypeByItemType(itemType)
- if itemType == Enum.ItemType.Equip then
- return Enum.BagViewPageType.Equip
- elseif itemType == Enum.ItemType.SkillEquip then
- return Enum.BagViewPageType.SkillEquip
- elseif itemType == Enum.ItemType.Card then
- return Enum.BagViewPageType.Card
- else
- return Enum.BagViewPageType.Item
- end
- end
- function UIBagCtr:RefreshViewDatas(bagViewPageType)
- if bagViewPageType == Enum.BagViewPageType.Equip then
- self.equipDatas = nil
- elseif bagViewPageType == Enum.BagViewPageType.Item then
- self.itemDatas = nil
- elseif bagViewPageType == Enum.BagViewPageType.Card then
- self.cardDatas = nil
- elseif bagViewPageType == Enum.BagViewPageType.SkillEquip then
- self.skillEquipDatas = nil
- end
- if self.selectPageType == bagViewPageType then
- self:RefreshShowDataType()
- end
- end
- function UIBagCtr:RefreshEquipDatas()
- local equipDatasSource = ManagerContainer.DataMgr.EquipData:GetAllEquipDataMap()
- local ls = {}
- for _,v in pairs(equipDatasSource) do
- local itemCfgData = ManagerContainer.CfgMgr:GetItemById(v.cfgId)
- local composition = itemCfgData.Composition
- local num = v.num
- while (num > composition) do
- table.insert(ls, {cfgId = v.cfgId, num = composition, fightPower = v.fightPower})
- num = num - composition
- end
- -- 最后还需要把剩余的单独占格
- if num > 0 then
- table.insert(ls, {cfgId = v.cfgId, num = num, fightPower = v.fightPower})
- end
- end
- table.sort(ls, function(a, b)
- local equipCfgDataA = ManagerContainer.CfgMgr:GetEquipById(a.cfgId)
- local equipCfgDataB = ManagerContainer.CfgMgr:GetEquipById(b.cfgId)
- if equipCfgDataA.EquipLevel == equipCfgDataB.EquipLevel then
- if equipCfgDataA.Id == equipCfgDataB.Id then
- return a.num > b.num
- else
- return equipCfgDataA.Id > equipCfgDataB.Id
- end
- else
- return equipCfgDataA.EquipLevel > equipCfgDataB.EquipLevel
- end
- end)
- return ls
- end
- function UIBagCtr:RefreshItemDatas()
- local itemDatasSource = ManagerContainer.DataMgr.BagData:GetAllItemDatas()
- local ls = {}
- for _,v in pairs(itemDatasSource) do
- if v.num > 0 then
- table.insert(ls, v)
- end
- end
- -- local fashionPaperMap = ManagerContainer.DataMgr.FashionData:GetFashionPaperMap()
- -- for key,value in pairs(fashionPaperMap) do
- -- if value > 0 then
- -- table.insert(ls, { cfgId = key, num = value })
- -- end
- -- end
- table.sort(ls, function(a, b)
- local itemCfgDataA = ManagerContainer.CfgMgr:GetItemById(a.cfgId)
- local itemCfgDataB = ManagerContainer.CfgMgr:GetItemById(b.cfgId)
- if itemCfgDataA.Quality == itemCfgDataB.Quality then
- return a.id < b.id
- else
- return itemCfgDataA.Quality > itemCfgDataB.Quality
- end
- end)
- return ls
- end
- function UIBagCtr:RefreshCardDatas()
- local cardDatasSource = ManagerContainer.DataMgr.CardData:GetAllCardDataMap()
- local ls = {}
- for _,v in pairs(cardDatasSource) do
- local itemCfgData = ManagerContainer.CfgMgr:GetItemById(v.cfgId)
- local composition = itemCfgData.Composition
- local num = v.num
- while (num > composition) do
- local data = {cfgId = v.cfgId, num = composition, CardType = v.CardType,
- CardLevel = v.CardLevel,FightPower = v.FightPower,Profession = v.Profession,Attribute2 = v.Attribute2,CardLocation = v.CardLocation}
- table.insert(ls, data)
- num = num - composition
- end
- -- 最后还需要把剩余的单独占格
- if num > 0 then
- local data = {cfgId = v.cfgId, num = num, CardType = v.CardType,
- CardLevel = v.CardLevel,FightPower = v.FightPower,Profession = v.Profession,Attribute2 = v.Attribute2,CardLocation = v.CardLocation}
- table.insert(ls, data)
- end
- end
- --table.sort(ls, function(a, b)
- -- local itemCfgDataA = ManagerContainer.CfgMgr:GetItemById(a.cfgId)
- -- local itemCfgDataB = ManagerContainer.CfgMgr:GetItemById(b.cfgId)
- -- if itemCfgDataA.Quality == itemCfgDataB.Quality then
- -- if a.cfgId == b.cfgId then
- -- return a.num > b.num
- -- else
- -- return a.cfgId > b.cfgId
- -- end
- -- else
- -- return itemCfgDataA.Quality > itemCfgDataB.Quality
- -- end
- --end)
- local cardDatas
- cardDatas = CommonUtil.ArrayFilterSelections(ls, Enum.FilterType.AND, {"CardType", "Attribute2", "CardLocation"}, {self.filterData.raritySelections, self.filterData.attrSelections, self.filterData.typeSelections})
- if cardDatas ~= nil then
- CommonUtil.ArraySortSelections(cardDatas, Enum.TableSortRule.Down, "CardType", "CardLevel", "FightPower", "cfgId")
- end
- if cardDatas == nil then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("NoCardTips3")
- end
- --LogHRWarning(Inspect(cardDatas))
- return cardDatas
- end
- function UIBagCtr:RefreshSkillEquipDatas()
- local skillEquipDatas = ManagerContainer.DataMgr.SkillEquipData:GetSkillEquips()
- if skillEquipDatas then
- CommonUtil.ArraySortSelections(skillEquipDatas, Enum.TableSortRule.Down, "quality", "starLv", "cfgId", "id")
- end
- return skillEquipDatas
- end
- function UIBagCtr:SetFilterData(data, isFilter)
- self.filterData = data
- self.isFilter = isFilter
- end
- function UIBagCtr:GetFilterData()
- return self.filterData
- end
- function UIBagCtr:GetIsFilter()
- return self.isFilter
- end
- return UIBagCtr
|