UICardEquipListView.lua 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. local UICardEquipListView = require("UICardTips/UICardEquipListView_Generate")
  2. local CardEquipItemCtr = require("Common/CardEquipItemCtr")
  3. function UICardEquipListView:OnAwake(data)
  4. self.controller = require("UICardTips/UICardEquipListCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UICardEquipListView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CARD_LIST_REFRESH, function()
  10. ManagerContainer.LuaUIMgr:AttrNoticeDisplay(self.controller:GetSlotIndex())
  11. self:UIClose()
  12. end)
  13. end
  14. function UICardEquipListView:FillContent(data, uiBase)
  15. self.uiBase = uiBase
  16. local gameObject = self.uiBase:GetRoot()
  17. if gameObject ~= nil then
  18. self.gameObject = gameObject
  19. self.transform = gameObject.transform
  20. end
  21. self:InitGenerate(self.transform, data)
  22. self:Init()
  23. end
  24. function UICardEquipListView:Init()
  25. for i = 1, 6 do
  26. self["card"..i]:SetActive(false)
  27. end
  28. local cfgId = self.controller:GetData()
  29. local cardData = ManagerContainer.CfgMgr:GetCardDataById(cfgId)
  30. local slotType = cardData.CardLocation
  31. local slotsRoot = ManagerContainer.DataMgr.UserData:GetAllSlotInfos()
  32. for k,v in pairs(slotsRoot) do
  33. if #v.slot_list > 0 then
  34. local slot = v.slot_list[slotType]
  35. if slot.equip_id > 0 then
  36. local jobType, jobIcon
  37. local name = ""
  38. if k == 1 then
  39. local heroData = ManagerContainer.DataMgr.UserData:GetHeroData()
  40. local jobData = ManagerContainer.CfgMgr:GetJobDataById(heroData.configId)
  41. jobType = jobData.JobType
  42. jobIcon = jobData.JobIcon
  43. name = ManagerContainer.DataMgr.UserData:GetUserNickname()
  44. else
  45. local heroData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(v.hero_id)
  46. local heroCfgData = ManagerContainer.CfgMgr:GetPartnerDataById(heroData.configId)
  47. jobType = heroCfgData.JobType
  48. jobIcon = heroCfgData.JobIcon
  49. name = I18N.T(heroCfgData.Name)
  50. end
  51. self["card"..k]:SetActive(true)
  52. local data = {cfgId = slot.equip_id, slotType = slotType, card_list = slot.card_id_list, belongName = name}
  53. local cardSlotIndex = CardEquipItemCtr:SetData(self, self["card"..k], data)
  54. local cardSlotCount = ManagerContainer.RedPointMgr.HeroRPCtr:GetCardSlotCountByType(slotType)
  55. local professhion = CommonUtil.EleInTable(jobType, cardData.Profession)
  56. local state = false
  57. local isEmpty = true
  58. if #slot.card_id_list >= cardSlotCount then
  59. for k,v in pairs(slot.card_id_list) do
  60. if v > 0 then
  61. isEmpty = false
  62. local state1 = self:CardRecommend(v, cfgId)
  63. if state1 then
  64. state = true
  65. end
  66. else
  67. state = true
  68. end
  69. end
  70. else
  71. state = true
  72. end
  73. if isEmpty then
  74. state = professhion
  75. else
  76. state = state and professhion
  77. end
  78. self["card"..k].labelRecommend:SetActive(state)
  79. CommonUtil.LoadIcon(self, jobIcon, function (sprite)
  80. self["card"..k].jobIcon.image.sprite = sprite
  81. end)
  82. if cardSlotIndex == 0 then
  83. self.uiBase:AddButtonUniqueEventListener(self["card"..k].btnChange.button, self, self.ChangeCard, k, slotType, cardSlotIndex, self.controller:GetData(), slot.card_id_list)
  84. self["card"..k].btnEquip.button.interactable = false
  85. self["card"..k].btnChange.button.interactable = true
  86. else
  87. self.uiBase:AddButtonUniqueEventListener(self["card"..k].btnEquip.button, self, self.InsertCard, k, slotType, cardSlotIndex, self.controller:GetData())
  88. self["card"..k].btnChange.button.interactable = false
  89. self["card"..k].btnEquip.button.interactable = true
  90. end
  91. end
  92. end
  93. end
  94. end
  95. function UICardEquipListView:CardRecommend(oldCardId, newCardId)
  96. local oldCardData = ManagerContainer.CfgMgr:GetCardDataById(oldCardId)
  97. local newCardData = ManagerContainer.CfgMgr:GetCardDataById(newCardId)
  98. if newCardData.CardType == oldCardData.CardType then
  99. if newCardData.CardLevel == oldCardData.CardLevel then
  100. return newCardData.FightPower > oldCardData.FightPower
  101. else
  102. return newCardData.CardLevel > oldCardData.CardLevel
  103. end
  104. else
  105. return newCardData.CardType > oldCardData.CardType
  106. end
  107. end
  108. function UICardEquipListView:InsertCard(button, params)
  109. local slotIndex = params[0]
  110. local slotType = params[1]
  111. local cardSlotIndex = params[2]
  112. local cfgId = params[3]
  113. self.controller:SendInsertCard(slotIndex, slotType, cardSlotIndex, cfgId)
  114. ManagerContainer.RedPointMgr.HeroRPCtr:RefreshRoleCardSlotRP(slotIndex)
  115. end
  116. function UICardEquipListView:ChangeCard(button, params)
  117. local slotIndex = params[0]
  118. local slotType = params[1]
  119. local cardSlotIndex = params[2]
  120. local cfgId = params[3]
  121. local cardList = params[4]
  122. self.controller:SetSlotIndex(slotIndex)
  123. local data = {cardList = cardList, slotType = slotType, idx = cardSlotIndex, cfgId = cfgId, slotIndex = slotIndex, cardSlotIndex = cardSlotIndex}
  124. self:UIHide()
  125. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBagCardListTips, data)
  126. end
  127. function UICardEquipListView:RemoveEventListener()
  128. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  129. end
  130. function UICardEquipListView:AddUIEventListener()
  131. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  132. self.uiBase:AddButtonEventListener(self.AnyBtn.button, function ()
  133. self:UIClose()
  134. end)
  135. self.uiBase:AddButtonEventListener(self.btnClose.button, function ()
  136. self:UIClose()
  137. end)
  138. end
  139. function UICardEquipListView:OnHide()
  140. end
  141. function UICardEquipListView:OnShow(data)
  142. self.controller:SetData(data)
  143. self:Init()
  144. end
  145. function UICardEquipListView:OnClose()
  146. end
  147. function UICardEquipListView:OnDispose()
  148. end
  149. --强制引导
  150. function UICardEquipListView:BagCardInsert(owner, ownerCB)
  151. local target
  152. local cardData = ManagerContainer.CfgMgr:GetCardDataById(self.controller:GetData())
  153. local slotType = cardData.CardLocation
  154. local slotsRoot = ManagerContainer.DataMgr.UserData:GetAllSlotInfos()
  155. for k,v in pairs(slotsRoot) do
  156. if #v.slot_list > 0 then
  157. local slot = v.slot_list[slotType]
  158. if slot.equip_id > 0 then
  159. local name = ""
  160. if k == 1 then
  161. name = ManagerContainer.DataMgr.UserData:GetUserNickname()
  162. else
  163. local heroData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(v.hero_id)
  164. local heroCfgData = ManagerContainer.CfgMgr:GetPartnerDataById(heroData.configId)
  165. name = heroCfgData.Name
  166. end
  167. local data = {cfgId = slot.equip_id, slotType = slotType, card_list = slot.card_id_list, belongName = name}
  168. local cardSlotIndex = CardEquipItemCtr:SetData(self, self["card"..k], data)
  169. if cardSlotIndex == 0 then
  170. target = self["card"..k].btnChange
  171. else
  172. target = self["card"..k].btnEquip
  173. end
  174. if target then
  175. break
  176. end
  177. end
  178. end
  179. end
  180. if target == nil then
  181. if owner and ownerCB then
  182. ownerCB(owner)
  183. return
  184. end
  185. end
  186. if owner and ownerCB then
  187. ownerCB(owner, target)
  188. return
  189. end
  190. end
  191. return UICardEquipListView