UIEquipListView.lua 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. local UIEquipListView = require("UIEquipList/UIEquipListView_Generate")
  2. local EquipListItemCtr = require("Common/EquipListItemCtr")
  3. local IconItemCtr = require("Common/IconItemCtr")
  4. function UIEquipListView:OnAwake(data)
  5. self.controller = require("UIEquipList/UIEquipListCtr")
  6. self.controller:Init(self)
  7. self.controller:SetData(data)
  8. end
  9. function UIEquipListView:AddEventListener()
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  11. end
  12. function UIEquipListView:FillContent(data, uiBase)
  13. self.uiBase = uiBase
  14. local gameObject = self.uiBase:GetRoot()
  15. if gameObject ~= nil then
  16. self.gameObject = gameObject
  17. self.transform = gameObject.transform
  18. end
  19. self:InitGenerate(self.transform, data)
  20. self:Init()
  21. end
  22. function UIEquipListView:RefreshEquipTips(button, params)
  23. --local data = self.controller:GetData()
  24. --local data1 = {params[0], data[2], false}
  25. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIEquipTips, data1)
  26. local data = params[0]
  27. data.state = Bit.bor(Bit.lshift(1, Enum.TipsEnterType.BaseAttr)) --CommonUtil.Get2Powers(Enum.TipsEnterType.BaseAttr)
  28. ManagerContainer.LuaUIMgr:OpenTips(data)
  29. end
  30. function UIEquipListView:Init()
  31. self.equipListEquippedItem:SetActive(false)
  32. self.equipBlank:SetActive(false)
  33. end
  34. function UIEquipListView:Refresh()
  35. local enterType = self.controller:GetEnterType()
  36. if enterType == Enum.ItemIEnterType.HeroEquip then
  37. self:RefreshHeroEquip()
  38. elseif enterType == Enum.ItemIEnterType.SkillEquip then
  39. self:RefreshSkillEquip()
  40. end
  41. end
  42. function UIEquipListView:OnPageInEnd()
  43. self.super.OnPageInEnd(self)
  44. self:Refresh()
  45. end
  46. function UIEquipListView:RefreshHeroEquip()
  47. local cfgId = self.controller:GetCfgId()
  48. --self.topItem:SetActive(cfgId > 0)
  49. local owner = self.controller:GetCallBackOwner()
  50. local cb = owner ~= nil and owner.RefreshEquipTips or nil
  51. local slotType = self.controller:GetSlotType()
  52. local equipDatas = ManagerContainer.DataMgr.EquipData:GetAllEquipDatasByType(slotType)
  53. self.equipListEquippedItem:SetActive(cfgId > 0)
  54. self.equipBlank:SetActive(cfgId == 0)
  55. if cfgId > 0 then
  56. self.topItem.grid:SetActive(true)
  57. self.itemDsc:SetActive(false)
  58. local cfgData = ManagerContainer.CfgMgr:GetEquipById(cfgId)
  59. self.topItem.textName.uILocalizeScript:SetContent(cfgData.Name)
  60. --local equipedData = ManagerContainer.CfgMgr:GetEquipById(cfgId)
  61. local data = {cfgId = cfgId}
  62. IconItemCtr:SetData(self, self.iconItem, data, Enum.ItemIEnterType.HeroEquip)
  63. local baseAttrs = {}
  64. for k,v in pairs(Enum.HeroAttrType) do
  65. if cfgData[k] and cfgData[k] ~= 0 then
  66. table.insert(baseAttrs, {Enum.HeroAttrType[k], cfgData[k]})
  67. end
  68. end
  69. for k, v in pairs(baseAttrs) do
  70. ManagerContainer.GoPoolMgr:SpawnGoNewLua(self.equipBaseAttrItem, function (itemlua)
  71. CommonUtil.BatchCreateItems(self, itemlua, self.topItem.grid.transform, v)
  72. end)
  73. end
  74. self.uiBase:AddButtonUniqueEventListener(self.btnDown.button, self.controller:GetCallBackOwner(), self.controller:GetCallBack1(), self.controller:GetSlotType(), cfgId)
  75. self.btnDown:SetActive(true)
  76. self.btnChange:SetActive(false)
  77. end
  78. if slotType == Enum.SlotEquipType.Weapon and equipDatas ~= nil then
  79. equipDatas = CommonUtil.ArrayFilterEquipWeapon(equipDatas, self.controller:GetJobType())
  80. end
  81. if equipDatas ~= nil then
  82. CommonUtil.LoopGridViewEleCreate(self, self.scrollView.loopVerticalScrollRect, self.content.verticalLayoutGroup, equipDatas, 0, function (itemLua, idx)
  83. local data = CommonUtil.TableClone(equipDatas[idx + 1])
  84. data.keepList = true
  85. data.needKeep = true
  86. data.noChange = false
  87. EquipListItemCtr:SetData(self, itemLua, data)
  88. self.uiBase:AddButtonUniqueEventListener(itemLua.btnChange.button, self.controller:GetCallBackOwner(), self.controller:GetCallBack(), self.controller:GetSlotType(), equipDatas[idx + 1].cfgId)
  89. end)
  90. end
  91. end
  92. function UIEquipListView:RefreshSkillEquip()
  93. local enterType = self.controller:GetEnterType()
  94. local cfgId = self.controller:GetCfgId()
  95. local logicData = self.controller:GetLogicData()
  96. self.equipListEquippedItem:SetActive(cfgId > 0)
  97. self.equipBlank:SetActive(cfgId == 0)
  98. if cfgId > 0 then
  99. self.topItem.grid:SetActive(false)
  100. self.itemDsc:SetActive(true)
  101. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(cfgId)
  102. if cfgData then
  103. self.topItem.textName.uILocalizeScript:SetContent(cfgData.Name)
  104. end
  105. IconItemCtr:SetData(self, self.iconItem, logicData, Enum.ItemIEnterType.Bag)
  106. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  107. if itemCfgData then
  108. self.itemDsc.text.text = I18N.T(itemCfgData.Describe)
  109. end
  110. self.uiBase:AddButtonUniqueEventListener(self.btnDown.button, self.controller:GetCallBackOwner(), self.controller:GetCallBack1())
  111. self.btnDown:SetActive(true)
  112. self.btnChange:SetActive(false)
  113. end
  114. local skillEquipDatas = self.controller:GetFilterSkillEquips()
  115. if skillEquipDatas ~= nil then
  116. CommonUtil.LoopGridViewEleCreate(self, self.scrollView.loopVerticalScrollRect, self.content.verticalLayoutGroup, skillEquipDatas, 0, function (itemLua, idx)
  117. local data = skillEquipDatas[idx + 1]
  118. EquipListItemCtr:SetData(self, itemLua, data, self, self.RefreshEquipTips, enterType)
  119. self.uiBase:AddButtonUniqueEventListener(itemLua.btnChange.button, self.controller:GetCallBackOwner(), self.controller:GetCallBack(), data.id)
  120. end)
  121. end
  122. end
  123. function UIEquipListView:RemoveEventListener()
  124. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  125. end
  126. function UIEquipListView:AddUIEventListener()
  127. self.uiBase:AddButtonEventListener(self.btnClose.button, function ()
  128. self:UIClose()
  129. end)
  130. self.uiBase:AddButtonEventListener(self.AnyBtn.button, function ()
  131. self:UIClose()
  132. end)
  133. end
  134. function UIEquipListView:OnHide()
  135. end
  136. function UIEquipListView:OnShow(data)
  137. self.controller:SetData(data)
  138. self:Refresh()
  139. end
  140. function UIEquipListView:OnClose()
  141. self.scrollView.loopVerticalScrollRect:ClearCells()
  142. end
  143. function UIEquipListView:OnDispose()
  144. end
  145. return UIEquipListView