SetCardPopUp = class("SetCardPopUp", BaseView); SetCardPopUp.ViewType = UIViewType.PopUpLayer autoImport("CardNCell"); function SetCardPopUp:Init() self:AddGameObjectComp(); if(self.viewdata.viewdata)then self.itemdata = self.viewdata.viewdata.itemdata; if(self.itemdata)then self.pos = ItemUtil.getEquipPos(self.itemdata.staticData.id); end end self:MapEvent(); self:InitUI(); end function SetCardPopUp:InitUI() -- local cardGrid = self:FindComponent("CardGrid", UIGrid); -- self.cardCtl = UIGridListCtrl.new(cardGrid, CardNCell, "CardNCell"); -- self.cardCtl:AddEventListener(MouseEvent.MouseClick, self.EquipCard, self); local wrapContainer = self:FindGO("CardGrid"); local itemSize = wrapContainer:GetComponent(UIWrapContent).itemSize; local view_width = UIManagerProxy.Instance:GetUIRootSize()[1]; local numInt, numPoint = math.modf(view_width/itemSize); if(numPoint < 0.5)then numInt = numInt + 1; else numInt = numInt + 2; end local wrapConfig = { wrapObj = wrapContainer, pfbNum = numInt, cellName = "CardNCell", control = CardNCell, dir = 2, } self.cardCtl = WrapCellHelper.new(wrapConfig) self.cardCtl:AddEventListener(MouseEvent.MouseClick, self.EquipCard, self); self.cardSlots = {}; for i=1,5 do local cardsprite = self:FindComponent("CardEquip"..i, UISprite, tempSlot) table.insert(self.cardSlots, cardsprite); end self:UpdateSlots(); self:UpdateCards(); end function SetCardPopUp:EquipCard(cellCtl) local data = cellCtl.data; if(data)then self.nowcell = cellCtl; self:sendNotification(UIEvent.ShowUI, {viewname = "CardPosChoosePopUp", itemData = self.itemdata}); end end function SetCardPopUp:GetFilterCard() local equipCards, cards = self.itemdata.equipedCardInfo or {}, {}; for pos,equipCard in pairs(equipCards) do equipCard.used = true; table.insert(cards, equipCard); end local items = BagProxy.Instance.bagData:GetItems(); for i=1,#items do local item = items[i]; local cardInfo = item.cardInfo; if(cardInfo and cardInfo.Position == self.pos)then -- 該界面卡片不可以堆疊 new出新的ItemData賦值 for i=1,item.num do local tempNew = ItemData.new(item.id, item.staticData.id); tempNew.num = 1; table.insert(cards, tempNew); end end end table.sort(cards, SetCardPopUp.CardSortRule); return cards; end function SetCardPopUp.CardSortRule(a,b) if(a.used ~= b.used)then return b.used~=true; end if(a.used and b.used)then return a.index < b.index; end if(a.staticData.Quality~=b.staticData.Quality)then return a.staticData.Quality>b.staticData.Quality end return a.staticData.id