UIEquipRefineTipsView.lua 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. local UIEquipRefineTipsView = require("UIEquipTips/UIEquipRefineTipsView_Generate")
  2. local CostItemCtr = require("Common/CostItemCtr")
  3. local defineLvStr = " <color=#1f9300>+%s</color>"
  4. function UIEquipRefineTipsView:OnAwake(data)
  5. self.controller = require("UIEquipTips/UIEquipRefineTipsCtr"):new()
  6. self.controller:Init(self)
  7. self.controller:SetData(data)
  8. end
  9. function UIEquipRefineTipsView:AddEventListener()
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SLOT_REFINE_LV_UP_SUCCESS, function(result)
  11. if result == Enum.NetErrorCode.ERROR_OK then
  12. --ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(Enum.ActionNotiveType.RefineSuccess)
  13. self:RefineResultDisplay(true)
  14. self:Init()
  15. elseif result == Enum.NetErrorCode.ERROR_RES_NOT_ENOUGH then
  16. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(result)
  17. else
  18. self:RefineResultDisplay(false)
  19. --ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(Enum.ActionNotiveType.RefineFailure)
  20. end
  21. end)
  22. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.COIN_CHANGED, function()
  23. --self:Init()
  24. local slotIndex = self.controller:GetSlotIndex()
  25. local slotType = self.controller:GetSlotType()
  26. local slots = ManagerContainer.DataMgr.UserData:GetCurSlotInfos(slotIndex)
  27. local refineLv = slots[slotType].level
  28. local nextRefineLv = refineLv + 1
  29. local nextRefineData = ManagerContainer.CfgMgr:GetEquipRefineDataByLv(nextRefineLv)
  30. if nextRefineData ~= nil then
  31. self:RefreshCurRefineCost(slotType, nextRefineData)
  32. end
  33. end)
  34. end
  35. function UIEquipRefineTipsView:FillContent(data, uiBase)
  36. self.uiBase = uiBase
  37. local gameObject = self.uiBase:GetRoot()
  38. if gameObject ~= nil then
  39. self.gameObject = gameObject
  40. self.transform = gameObject.transform
  41. end
  42. self:InitGenerate(self.transform, data)
  43. self:Init()
  44. end
  45. function UIEquipRefineTipsView:RefineResultDisplay(result)
  46. if result then
  47. self.fx_ui_refine_failure.uIParticle:PlayCachedParticalSystem(false)
  48. self.fx_ui_refine_success.uIParticle:PlayCachedParticalSystem(true)
  49. else
  50. self.fx_ui_refine_success.uIParticle:PlayCachedParticalSystem(false)
  51. self.fx_ui_refine_failure.uIParticle:PlayCachedParticalSystem(true)
  52. end
  53. end
  54. function UIEquipRefineTipsView:Init()
  55. CommonUtil.BatchDisposeItems(self)
  56. local cfgId = self.controller:GetCfgId()
  57. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  58. local slotIndex = self.controller:GetSlotIndex()
  59. local slotType = self.controller:GetSlotType()
  60. local slots = ManagerContainer.DataMgr.UserData:GetCurSlotInfos(slotIndex)
  61. local refineLv = slots[slotType].level
  62. -- 道具图标
  63. ManagerContainer.GoPoolMgr:SpawnItemGo(itemCfgData.ResType, function(itemlua)
  64. CommonUtil.BatchCreateItems(self, itemlua, self.contentItem.transform, self.controller.data, Enum.ItemIEnterType.HeroEquip)
  65. end)
  66. -- 道具名称
  67. local name = I18N.T(itemCfgData.Name)
  68. self.textName.text.text = name
  69. self.refineLvBox:SetActive(refineLv > 0)
  70. if refineLv > 0 then
  71. self.textRefineLv.text.text = "+"..refineLv
  72. end
  73. -- 道具类型
  74. self.textType.uILocalizeScript:SetContent("ItemTypeDes_" .. itemCfgData.ResType)
  75. -- 装备基本属性
  76. local equipCfgData = ManagerContainer.CfgMgr:GetEquipById(cfgId)
  77. local baseAttrs = {}
  78. for k,v in pairs(Enum.HeroAttrType) do
  79. if equipCfgData[k] and equipCfgData[k] ~= 0 then
  80. table.insert(baseAttrs, {Enum.HeroAttrType[k], equipCfgData[k], refineLv})
  81. end
  82. end
  83. local curRefineData = ManagerContainer.CfgMgr:GetEquipRefineDataByLv(refineLv)
  84. if curRefineData == nil then
  85. self.boxCurrent.level.number.uILocalizeScript:SetContent("None")
  86. else
  87. self.boxCurrent.level.number.text.text = CommonUtil.StringConcat("+", refineLv)
  88. end
  89. for _,v in pairs(baseAttrs) do
  90. ManagerContainer.GoPoolMgr:SpawnGo(Enum.PrefabNames.EquipBaseAttrItem, function(itemlua)
  91. CommonUtil.BatchCreateItems(self, itemlua, self.boxCurrent.grid.transform, v, Enum.ItemIEnterType.EquipRefine, false)
  92. end)
  93. end
  94. local nextRefineLv = refineLv + 1
  95. local nextRefineData = ManagerContainer.CfgMgr:GetEquipRefineDataByLv(nextRefineLv)
  96. --self.boxMAX:SetActive(nextRefineData == nil)
  97. --self.boxNext:SetActive(nextRefineData ~= nil)
  98. self.boxCost:SetActive(nextRefineData ~= nil)
  99. --self.chance:SetActive(nextRefineData ~= nil)
  100. self.dscMax:SetActive(nextRefineData == nil)
  101. local baseAttrs1 = clone(baseAttrs)
  102. for k,v in pairs(baseAttrs1) do
  103. v[3] = nextRefineData == nil and refineLv or nextRefineLv
  104. v[4] = nextRefineData == nil
  105. end
  106. for _,v in pairs(baseAttrs1) do
  107. ManagerContainer.GoPoolMgr:SpawnGo(Enum.PrefabNames.EquipBaseAttrItem, function(itemlua)
  108. CommonUtil.BatchCreateItems(self, itemlua, self.boxNext.grid.transform, v, Enum.ItemIEnterType.EquipRefine, true)
  109. end)
  110. end
  111. self.boxNext.level.number:SetActive(nextRefineData ~= nil)
  112. if nextRefineData ~= nil then
  113. self.boxNext.level.text.uILocalizeScript:SetContent("NextLv")
  114. self.boxNext.level.number.text.text = CommonUtil.StringConcat("+", nextRefineLv)
  115. self:RefreshCurRefineCost(slotType, nextRefineData)
  116. self.chanceVal.text.text = CommonUtil.StringConcat(nextRefineData.rate/100, "%")
  117. else
  118. self.boxNext.level.text.uILocalizeScript:SetContentWithColor("Limit", Constant.GreenColorText)
  119. --CommonUtil.SetTextColor(self.boxNext.level.text.text, Constant.GreenColorText)
  120. end
  121. self.btn_Refine:SetActive(nextRefineData ~= nil)
  122. end
  123. local coinLack, matLack = false,false
  124. local mateId
  125. function UIEquipRefineTipsView:RefreshCurRefineCost(slotType, nextRefineData)
  126. local is1 = CommonUtil.EleInTable(slotType, nextRefineData.Place1)
  127. local index = is1 and 1 or 2
  128. local data = {cfgId = Enum.ItemType.Coin, cost = nextRefineData["Costzeny"..index]}
  129. CostItemCtr:SetData(self, self.cost1, data, self, self.ShowItemTips)
  130. coinLack = CommonUtil.ResLackErrorNotice(Enum.ItemType.Coin, nextRefineData["Costzeny"..index], true)
  131. local data1 = {cfgId = nextRefineData["Costitem"..index][1][1], num = 0, cost = nextRefineData["Costitem"..index][1][2]}
  132. CostItemCtr:SetData(self, self.cost2, data1, self, self.ShowItemTips)
  133. mateId = nextRefineData["Costitem"..index][1][1]
  134. matLack = CommonUtil.ResLackErrorNotice(nextRefineData["Costitem"..index][1][1], nextRefineData["Costitem"..index][1][2], true)
  135. end
  136. function UIEquipRefineTipsView:ShowItemTips(button, params)
  137. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIItemTips, params[0])
  138. ManagerContainer.LuaUIMgr:OpenTips(params[0])
  139. end
  140. function UIEquipRefineTipsView:RemoveEventListener()
  141. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  142. end
  143. function UIEquipRefineTipsView:AddUIEventListener()
  144. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  145. self.uiBase:AddButtonEventListener(self.btnClose.button, function ()
  146. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIEquipTips, self.controller:GetData())
  147. self:UIClose()
  148. end)
  149. self.uiBase:AddButtonEventListener(self.AnyBtn.button, function ()
  150. self:UIClose()
  151. end)
  152. self.uiBase:AddButtonEventListener(self.btn_Refine.button, function ()
  153. if coinLack then
  154. CommonUtil.ItemNotEnoughHandle(Enum.ItemType.Coin)
  155. return
  156. end
  157. if matLack then
  158. CommonUtil.ItemNotEnoughHandle(mateId)
  159. return
  160. end
  161. self.controller:SendSlotRefineReq()
  162. end)
  163. end
  164. function UIEquipRefineTipsView:OnHide()
  165. end
  166. function UIEquipRefineTipsView:OnShow(data)
  167. self.controller:SetData(data)
  168. self:Init()
  169. end
  170. function UIEquipRefineTipsView:OnClose()
  171. end
  172. function UIEquipRefineTipsView:OnDispose()
  173. self.fx_ui_refine_success.uIParticle:PlayCachedParticalSystem(false)
  174. self.fx_ui_refine_failure.uIParticle:PlayCachedParticalSystem(false)
  175. end
  176. return UIEquipRefineTipsView