UIItemTipsView.lua 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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. local f = I18N.T('BtnDecompose')
  116. local h = I18N.T('BtnForge1')
  117. self.btn_Decompose.text.text.text = (owned and f or h)
  118. if not multi then
  119. self.uiBase:AddButtonUniqueEventListener(self.btn_Info.button, self, function()
  120. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  121. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(parterId)
  122. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Role, partnerData)
  123. end)
  124. end
  125. self.uiBase:AddButtonUniqueEventListener(self.btn_Decompose.button, self, function()
  126. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  127. if owned then
  128. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChipRoom, {self.controller:GetCfgId()})
  129. else
  130. self.controller:SendComposeChip()
  131. end
  132. end)
  133. end
  134. self.btn_Sell:SetActive(false)
  135. self.btn_Equip:SetActive(false)
  136. if not multi then self.btn_Info:SetActive(isOpenFunc) end
  137. self.btn_Decompose:SetActive(isOpenFunc)
  138. self.equipBox:SetActive(false)
  139. self.btnBox:SetActive(isOpenFunc)
  140. self.bottomBox:SetActive(not isOpenFunc)
  141. self.btn_Compose:SetActive(false)
  142. else
  143. self.btn_Sell:SetActive(false)
  144. self.btn_Equip:SetActive(false)
  145. self.btn_Info:SetActive(false)
  146. self.btn_Decompose:SetActive(false)
  147. self.equipBox:SetActive(false)
  148. self.btnBox:SetActive(false)
  149. self.bottomBox:SetActive(true)
  150. self.btn_Compose:SetActive(false)
  151. end
  152. end
  153. function UIItemTipsView:RemoveEventListener()
  154. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  155. end
  156. function UIItemTipsView:AddUIEventListener()
  157. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  158. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, function()
  159. ManagerContainer.LuaUIMgr:Hide(self.uiData.id)
  160. end)
  161. end
  162. function UIItemTipsView:OnHide()
  163. self.hideFrameCount = Time.frameCount
  164. end
  165. function UIItemTipsView:OnShow(data)
  166. self.controller:SetData(data)
  167. self:Init()
  168. if self.hideFrameCount and self.hideFrameCount < Time.frameCount then
  169. self.window.animator:Rebind()
  170. end
  171. end
  172. function UIItemTipsView:OnClose()
  173. end
  174. function UIItemTipsView:OnDispose()
  175. self.uIEventHandler:RemoveListener()
  176. end
  177. return UIItemTipsView