UIItemTipsView.lua 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. local UIItemTipsView = require("UIItemTips/UIItemTipsView_Generate")
  2. function UIItemTipsView:OnAwake(data)
  3. self.controller = require("UIItemTips/UIItemTipsCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIItemTipsView:AddEventListener()
  8. self.uiBase:AddUIEventHandlerClickListener(self.uIEventHandler, function (go)
  9. if go and go.transform:IsChildOf(self.transform) then
  10. return
  11. end
  12. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  13. end)
  14. end
  15. function UIItemTipsView:FillContent(data, uiBase)
  16. self.uiBase = uiBase
  17. local gameObject = self.uiBase:GetRoot()
  18. if gameObject ~= nil then
  19. self.gameObject = gameObject
  20. self.transform = gameObject.transform
  21. end
  22. self:InitGenerate(self.transform, data)
  23. self:Init()
  24. end
  25. function UIItemTipsView:Init()
  26. local isOpenFunc = self.controller:IsOpenFuncBtn()
  27. local cfgId = self.controller:GetCfgId()
  28. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  29. -- 道具图标
  30. ManagerContainer.GoPoolMgr:SpawnItemGo(itemCfgData.ResType, function(itemlua)
  31. CommonUtil.BatchCreateItems(self, itemlua, self.contentItem.transform, self.controller:GetExtData() or self.controller.data, Enum.ItemIEnterType.ItemTips)
  32. end)
  33. -- 道具名称
  34. self.textName.text.text = itemCfgData.Name
  35. -- 道具类型
  36. self.textType.uILocalizeScript:SetContent("ItemTypeDes_" .. itemCfgData.ResType)
  37. -- 道具描述
  38. self.desTxt.text.text = itemCfgData.Describe
  39. if itemCfgData.ResType == Enum.ItemType.Equip then
  40. -- 装备基本属性
  41. local equipCfgData = ManagerContainer.CfgMgr:GetEquipById(cfgId)
  42. local baseAttrs = {}
  43. for k,v in pairs(Enum.HeroAttrType) do
  44. if equipCfgData[k] and equipCfgData[k] ~= 0 then
  45. table.insert(baseAttrs, {Enum.HeroAttrType[k], equipCfgData[k]})
  46. end
  47. end
  48. for _,v in pairs(baseAttrs) do
  49. ManagerContainer.GoPoolMgr:SpawnGo(Enum.PrefabNames.EquipBaseAttrItem, function(itemlua)
  50. CommonUtil.BatchCreateItems(self, itemlua, self.equipBox.base.grid.transform, v)
  51. end)
  52. end
  53. self.equipBox.suit:SetActive(equipCfgData.Suit > 0)
  54. -- 装备套装属性
  55. if equipCfgData.Suit > 0 then
  56. -- 装备套装属性
  57. local equipSuitCfgData = ManagerContainer.CfgMgr:GetEquipSuitById(equipCfgData.Suit)
  58. self.suitTxt.text.text = equipSuitCfgData.Name
  59. self.suitActiveTxt.text.text = "(0/3)"
  60. local i = 1
  61. local keyName = ("Suit" .. i)
  62. local suitAttrs = {}
  63. while (equipSuitCfgData[keyName] ~= nil) do
  64. if equipSuitCfgData[keyName] ~= "" then
  65. table.insert(suitAttrs, {i, equipSuitCfgData[keyName], false, i})
  66. end
  67. i = i + 1
  68. keyName = ("Suit" .. i)
  69. end
  70. for _,v in pairs(suitAttrs) do
  71. ManagerContainer.GoPoolMgr:SpawnGo(Enum.PrefabNames.EquipSuitAttrItem, function(itemlua)
  72. CommonUtil.BatchCreateItems(self, itemlua, self.equipBox.suit.transform, v)
  73. end)
  74. end
  75. end
  76. if isOpenFunc then
  77. self.uiBase:AddButtonUniqueEventListener(self.btn_Equip.button, self, function()
  78. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  79. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Role)
  80. end)
  81. self.uiBase:AddButtonUniqueEventListener(self.btn_Compose.button, self, function ()
  82. self:UIClose()
  83. local forgeType = CommonUtil.GetEquipForgeTypeByCfgId(cfgId)
  84. local data
  85. if forgeType ~= nil then
  86. data = Enum.EquipForgeType[forgeType]
  87. end
  88. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIForge1, data)
  89. end)
  90. end
  91. self.btn_Sell:SetActive(false)
  92. self.btn_Equip:SetActive(false)
  93. self.btn_Info:SetActive(false)
  94. self.btn_Decompose:SetActive(false)
  95. self.equipBox:SetActive(true)
  96. self.btnBox:SetActive(isOpenFunc)
  97. self.bottomBox:SetActive(not isOpenFunc)
  98. self.btn_Compose:SetActive(isOpenFunc)
  99. elseif itemCfgData.ResType == Enum.ItemType.ParterChip then
  100. local composeItem = itemCfgData.ComposeItem
  101. local multi = false
  102. local owned = false
  103. local parterId = nil
  104. if composeItem and #composeItem > 0 then
  105. if type(composeItem[1]) == 'number' then
  106. -- 单个
  107. parterId = composeItem[1]
  108. local data = ManagerContainer.DataMgr.PartnerData:GetPartnerDataById(parterId)
  109. owned = ((data and data.owned) and data.owned or false)
  110. else
  111. multi = true
  112. end
  113. end
  114. if isOpenFunc then
  115. self.btn_Decompose.text.text.text = (owned and '分解' or '合成')
  116. if not multi then
  117. self.uiBase:AddButtonUniqueEventListener(self.btn_Info.button, self, function()
  118. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  119. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(parterId)
  120. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Role, partnerData)
  121. end)
  122. end
  123. self.uiBase:AddButtonUniqueEventListener(self.btn_Decompose.button, self, function()
  124. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  125. if owned then
  126. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChipRoom, {self.controller:GetCfgId()})
  127. else
  128. self.controller:SendComposeChip()
  129. end
  130. end)
  131. end
  132. self.btn_Sell:SetActive(false)
  133. self.btn_Equip:SetActive(false)
  134. if not multi then self.btn_Info:SetActive(isOpenFunc) end
  135. self.btn_Decompose:SetActive(isOpenFunc)
  136. self.equipBox:SetActive(false)
  137. self.btnBox:SetActive(isOpenFunc)
  138. self.bottomBox:SetActive(not isOpenFunc)
  139. self.btn_Compose:SetActive(false)
  140. else
  141. self.btn_Sell:SetActive(false)
  142. self.btn_Equip:SetActive(false)
  143. self.btn_Info:SetActive(false)
  144. self.btn_Decompose:SetActive(false)
  145. self.equipBox:SetActive(false)
  146. self.btnBox:SetActive(false)
  147. self.bottomBox:SetActive(true)
  148. self.btn_Compose:SetActive(false)
  149. end
  150. end
  151. function UIItemTipsView:RemoveEventListener()
  152. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  153. end
  154. function UIItemTipsView:AddUIEventListener()
  155. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  156. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, function()
  157. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  158. end)
  159. end
  160. function UIItemTipsView:OnHide()
  161. self.hideFrameCount = Time.frameCount
  162. end
  163. function UIItemTipsView:OnShow(data)
  164. self.controller:SetData(data)
  165. self:Init()
  166. if self.hideFrameCount and self.hideFrameCount < Time.frameCount then
  167. self.window.animator:Rebind()
  168. end
  169. end
  170. function UIItemTipsView:OnClose()
  171. end
  172. function UIItemTipsView:OnDispose()
  173. self.uIEventHandler:RemoveListener()
  174. end
  175. return UIItemTipsView