UICardListTipsView.lua 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. local UICardListTipsView = require("UICardTips/UICardListTipsView_Generate")
  2. local CardListItemCtr = require("Common/CardListItemCtr")
  3. local CardListEquippedItemCtr = require("Common/CardListEquippedItemCtr")
  4. local cardDatas
  5. local needRecommend
  6. function UICardListTipsView:OnAwake(data)
  7. self.controller = require("UICardTips/UICardListTipsCtr"):new()
  8. self.controller:Init(self)
  9. self.controller:SetData(data)
  10. end
  11. function UICardListTipsView:RefreshCardData()
  12. local slotIndex = self.controller:GetSlotIndex()
  13. --local slotType = self.controller:GetSlotType()
  14. --local cardSlot = self.controller:GetCardSlotIndex()
  15. --
  16. --local slots = ManagerContainer.DataMgr.UserData:GetCurSlotInfos(slotIndex)
  17. --local cfgId = slots[slotType].card_id_list[cardSlot] or 0
  18. --self.controller:SetCfgId(cfgId)
  19. ManagerContainer.LuaUIMgr:AttrNoticeDisplay(slotIndex)
  20. end
  21. function UICardListTipsView:AddEventListener()
  22. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CARD_LIST_REFRESH, function()
  23. self:RefreshCardData()
  24. --self:Init()
  25. self:UIClose()
  26. end)
  27. end
  28. function UICardListTipsView:FillContent(data, uiBase)
  29. self.uiBase = uiBase
  30. local gameObject = self.uiBase:GetRoot()
  31. if gameObject ~= nil then
  32. self.gameObject = gameObject
  33. self.transform = gameObject.transform
  34. end
  35. self:InitGenerate(self.transform, data)
  36. self:Init()
  37. end
  38. local function IsInCardList(val, list)
  39. for _,v in pairs(list) do
  40. if val == v.cfgId then
  41. return true
  42. end
  43. end
  44. return false
  45. end
  46. function UICardListTipsView:Init()
  47. local cfgId = self.controller:GetCfgId()
  48. local jobType = self.controller:GetHeroJobType()
  49. local list = ManagerContainer.DataMgr.CardData:GetAllCardDatasByType(self.controller:GetSlotType())
  50. CommonUtil.ArraySortSelections(list, Enum.TableSortRule.Down, "CardType", "CardLevel", "FightPower", "cfgId")
  51. --筛选 排序
  52. cardDatas = CommonUtil.ArrayFilterSelections(list, Enum.FilterType.AND, {"Profession"}, {jobType})
  53. needRecommend = false
  54. if cardDatas ~= nil and next(cardDatas) then
  55. needRecommend = true
  56. CommonUtil.ArraySortSelections(cardDatas, Enum.TableSortRule.Down, "CardType", "CardLevel", "FightPower", "cfgId")
  57. local curCardCfg = ManagerContainer.CfgMgr:GetCardDataById(cfgId)
  58. if curCardCfg and curCardCfg.FightPower >= cardDatas[1].FightPower then
  59. needRecommend = false
  60. end
  61. end
  62. if list then
  63. for _,v in pairs(list) do
  64. if not IsInCardList(v.cfgId, cardDatas) then
  65. cardDatas[#cardDatas + 1] = v
  66. end
  67. end
  68. end
  69. self.cardListEquippedItem:SetActive(cfgId > 0)
  70. self.cardSlotBlank:SetActive(cfgId == 0)
  71. if cfgId > 0 then
  72. local itemLua = self.cardListEquippedItem
  73. local data = {cfgId = cfgId, heroId = self.controller:GetHeroId()}
  74. CardListEquippedItemCtr:SetData(self, itemLua, data, self, self.ShowCardTips)
  75. self.uiBase:AddButtonUniqueEventListener(itemLua.btnRemove.button, self, self.RemoveCard, cfgId)
  76. end
  77. self.dscBox:SetActive(cardDatas == nil)
  78. self.cardScrollView:SetActive(cardDatas ~= nil)
  79. end
  80. function UICardListTipsView:OnPageInEnd()
  81. self.super:OnPageInEnd()
  82. local cfgId = self.controller:GetCfgId()
  83. if cardDatas ~= nil then
  84. CommonUtil.LoopGridViewEleCreateNew(self, self.cardScrollView.loopVerticalScrollRect, self.cardScrollView.content.verticalLayoutGroup, cardDatas, 0, nil, function (itemLua, idx)
  85. cardDatas[idx + 1].idx = idx + 1
  86. cardDatas[idx + 1].needRecommend = needRecommend
  87. CardListItemCtr:SetData(self, itemLua, cardDatas[idx + 1], self, self.ShowCardTips)
  88. self.uiBase:AddButtonUniqueEventListener(itemLua.btnPluginCard.button, self, self.InsertCard, cardDatas[idx + 1].cfgId)
  89. self.uiBase:AddButtonUniqueEventListener(itemLua.btnReplace.button, self, self.InsertCard, cardDatas[idx + 1].cfgId)
  90. itemLua.btnReplace:SetActive(cfgId > 0)
  91. itemLua.btnPluginCard:SetActive(cfgId == 0)
  92. end)
  93. end
  94. end
  95. function UICardListTipsView:ShowCardTips(button, params)
  96. end
  97. function UICardListTipsView:InsertCard(button, params)
  98. self.controller:SendInsertCard(params[0])
  99. local data = self.controller:GetData()
  100. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardTips, data.tipsData)
  101. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIEquipTips, data.equipTipsData)
  102. --self:UIClose()
  103. end
  104. function UICardListTipsView:RemoveCard(button, params)
  105. self.controller:SendRemoveCard()
  106. local data = self.controller:GetData()
  107. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardTips, data.tipsData)
  108. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIEquipTips, data.equipTipsData)
  109. --self:UIClose()
  110. end
  111. function UICardListTipsView:RemoveEventListener()
  112. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  113. end
  114. function UICardListTipsView:AddUIEventListener()
  115. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  116. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnCloseClick)
  117. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnCloseClick)
  118. end
  119. function UICardListTipsView:OnCloseClick()
  120. self:UIClose()
  121. local data = self.controller:GetData()
  122. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UICardTips, data.tipsData)
  123. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIEquipTips, data.equipTipsData)
  124. end
  125. function UICardListTipsView:OnHide()
  126. end
  127. function UICardListTipsView:OnShow(data)
  128. self.controller:SetData(data)
  129. self:Init()
  130. end
  131. function UICardListTipsView:OnClose()
  132. self.cardScrollView.loopVerticalScrollRect:ClearCells()
  133. cardDatas = nil
  134. end
  135. function UICardListTipsView:OnDispose()
  136. end
  137. return UICardListTipsView