UIFashionLvUpView.lua 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. local UIFashionLvUpView = require("UIFashion/UIFashionLvUpView_Generate")
  2. local CostItemCtr = require("Common/CostItemCtr")
  3. function UIFashionLvUpView:OnAwake(data)
  4. self.controller = require("UIFashion/UIFashionLvUpCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIFashionLvUpView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FASHION_LV_UP_CHANGE, self, self.OnPageInEnd)
  11. end
  12. function UIFashionLvUpView: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 UIFashionLvUpView:Init()
  23. if self.bg.uIEffectCfg and not self.bg.uIEffectCfg.Ready then
  24. self.bg.uIEffectCfg:LoadEffect()
  25. end
  26. end
  27. function UIFashionLvUpView:OnPageInEnd(needUp)
  28. self.super.OnPageInEnd(self)
  29. self:RefreshTop()
  30. self:RefreshAttrs(needUp)
  31. self:RefreshCosts()
  32. self:RefreshBottom()
  33. if needUp then
  34. if self.bg.uIEffectCfg then
  35. self.bg.uIEffectCfg:HideEffect("FX_UI_LV_UP",self.bg.fx.transform)
  36. self.bg.uIEffectCfg:ShowEffect("FX_UI_LV_UP",self.bg.fx.transform)
  37. end
  38. end
  39. end
  40. function UIFashionLvUpView:RefreshTop()
  41. local fashionId = self.controller:GetData()
  42. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
  43. local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(fashionId)
  44. if not fashionCfgData or not fashionLogicData then
  45. return
  46. end
  47. local itemlua = self.fashionWearItem
  48. itemlua.icon.image.sprite = nil
  49. itemlua.icon.image.enabled = false
  50. itemlua.frame.image.sprite = nil
  51. itemlua.frame.image.enabled = false
  52. CommonUtil.LoadIcon(self, fashionCfgData.FashionIcon, function (sprite)
  53. itemlua.icon.image.sprite = sprite
  54. itemlua.icon.image.enabled = true
  55. end, itemlua, "FashionWearItemIconAsyncIdx")
  56. CommonUtil.LoadIcon(self, Constant.Quality_Frame_Icons[fashionCfgData.FashionQuality], function (sprite)
  57. itemlua.frame.image.sprite = sprite
  58. itemlua.frame.image.enabled = true
  59. end, itemlua, "FashionWearItemFrameAsyncIdx")
  60. itemlua.icon:SetActive(true)
  61. itemlua.bg:SetActive(true)
  62. itemlua.frame:SetActive(true)
  63. itemlua.selected:SetActive(false)
  64. itemlua.disable:SetActive(false)
  65. itemlua.redPoint:SetActive(false)
  66. itemlua.bg.button.onClick:RemoveAllListeners()
  67. local fashionLogicData = self.controller:GetFashionLogicData(fashionCfgData.FashionId)
  68. itemlua.num.text.text = "Lv "..(fashionLogicData and fashionLogicData.lv or 1)
  69. self.scrollView.text.text.text = I18N.T(fashionCfgData.FashionName)
  70. self.scrollView.numlv.text.text = (fashionLogicData and fashionLogicData.lv or 1) .. "/"..ManagerContainer.CfgMgr:GetFashionMaxLv()
  71. end
  72. function UIFashionLvUpView:RefreshAttrs(needUp)
  73. local fashionId = self.controller:GetData()
  74. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
  75. local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(fashionId)
  76. if not fashionCfgData or not fashionLogicData then
  77. return
  78. end
  79. local curLv = fashionLogicData and fashionLogicData.lv or 1
  80. local maxLv = ManagerContainer.CfgMgr:GetFashionMaxLv()
  81. self.lV:SetActive(true)
  82. self.lV.image:SetActive(curLv < maxLv)
  83. self.lV.number2:SetActive(curLv < maxLv)
  84. self.lV.number1.text.text = curLv
  85. self.lV.number2.text.text = curLv + 1
  86. if needUp then
  87. if self.lV.uIEffectCfg and not self.lV.uIEffectCfg.Ready then
  88. self.lV.uIEffectCfg:LoadEffect()
  89. end
  90. if self.lV.uIEffectCfg then
  91. self.lV.uIEffectCfg:HideEffect("FX_UI_TuPo_New",self.lV.fx.transform)
  92. self.lV.uIEffectCfg:ShowEffect("FX_UI_TuPo_New",self.lV.fx.transform)
  93. end
  94. end
  95. local lvCfgData = ManagerContainer.CfgMgr:GetFashionLvDataByLv(curLv)
  96. local nextLvCfgData = ManagerContainer.CfgMgr:GetFashionLvDataByLv(curLv + 1)
  97. local attrs = fashionLogicData.attrs
  98. for i = 1, 5 do
  99. local attrItem = self["attr"..i]
  100. if attrItem then
  101. local attr = attrs and attrs[i] or nil
  102. attrItem.image:SetActive(attr and curLv < maxLv)
  103. attrItem.number2:SetActive(attr and curLv < maxLv)
  104. attrItem.number1:SetActive(attr ~= nil)
  105. if attr then
  106. local jobType = attr.jobType
  107. local attrId = attr.attrId
  108. local attrValue = attr.value
  109. local jobName = self.controller:GetJobTypeName(jobType)
  110. attrItem.text.text.text = jobName..I18N.SetLanguageValue(CommonUtil.HeroAttrFormatName(attrId, attrValue))
  111. attrItem.number1.text.text = "+"..attrValue
  112. attrItem.number2.text.text = "+"..(nextLvCfgData and nextLvCfgData.UpAttribute or 0)
  113. if needUp then
  114. if attrItem.uIEffectCfg and not attrItem.uIEffectCfg.Ready then
  115. attrItem.uIEffectCfg:LoadEffect()
  116. end
  117. if attrItem.uIEffectCfg then
  118. attrItem.uIEffectCfg:HideEffect("FX_UI_TuPo_New",attrItem.fx.transform)
  119. attrItem.uIEffectCfg:ShowEffect("FX_UI_TuPo_New",attrItem.fx.transform)
  120. end
  121. end
  122. end
  123. attrItem:SetActive(attr ~= nil)
  124. end
  125. end
  126. end
  127. local resLack = {}
  128. function UIFashionLvUpView:RefreshCosts()
  129. local fashionId = self.controller:GetData()
  130. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
  131. local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(fashionId)
  132. if not fashionCfgData or not fashionLogicData then
  133. return
  134. end
  135. local lvCfgData = ManagerContainer.CfgMgr:GetFashionLvDataByLv(fashionLogicData.lv + 1)
  136. local isMax = lvCfgData == nil
  137. if isMax then
  138. lvCfgData = ManagerContainer.CfgMgr:GetFashionLvDataByLv(fashionLogicData.lv)
  139. end
  140. if not lvCfgData then
  141. return
  142. end
  143. local quality = fashionCfgData.FashionQuality
  144. local costs = lvCfgData['UpMaterial'..quality]
  145. for i = 1, 3 do
  146. local cost = costs and costs[i] or nil
  147. local costItem = self["cost"..i]
  148. if costItem then
  149. costItem:SetActive(cost ~= nil)
  150. if cost then
  151. local data = {cfgId = cost[1], cost = cost[2], isMax = isMax}
  152. CostItemCtr:SetData(self, costItem, data, self, self.ShowItemTips)
  153. resLack[i] = {isLack = false, cfgId = cost[1]}
  154. resLack[i].isLack = CommonUtil.ResLackErrorNotice(cost[1], cost[2], true)
  155. end
  156. end
  157. end
  158. end
  159. function UIFashionLvUpView:RefreshBottom()
  160. local fashionId = self.controller:GetData()
  161. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
  162. local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(fashionId)
  163. if not fashionCfgData or not fashionLogicData then
  164. return
  165. end
  166. local curLv = fashionLogicData and fashionLogicData.lv or 1
  167. local maxLv = ManagerContainer.CfgMgr:GetFashionMaxLv()
  168. self.max:SetActive(curLv >= maxLv)
  169. self.btnLvUp:SetActive(curLv < maxLv)
  170. end
  171. function UIFashionLvUpView:ShowItemTips(button, params)
  172. ManagerContainer.LuaUIMgr:OpenTips(params[0])
  173. end
  174. function UIFashionLvUpView:RemoveEventListener()
  175. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  176. end
  177. function UIFashionLvUpView:AddUIEventListener()
  178. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnClickClose)
  179. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnClickClose)
  180. self.uiBase:AddButtonEventListener(self.btnLvUp.button, self, self.OnClickUpgradeBtn)
  181. end
  182. function UIFashionLvUpView:OnClickClose()
  183. self:UIClose()
  184. end
  185. function UIFashionLvUpView:OnClickUpgradeBtn()
  186. for i = 1,#resLack do
  187. if resLack[i].isLack then
  188. CommonUtil.ItemNotEnoughHandle(resLack[i].cfgId)
  189. return
  190. end
  191. end
  192. self.controller:SendFashionLvUp()
  193. end
  194. function UIFashionLvUpView:OnHide()
  195. end
  196. function UIFashionLvUpView:OnShow(data)
  197. self.controller:SetData(data)
  198. end
  199. function UIFashionLvUpView:OnClose()
  200. for i = 1, 5 do
  201. local attrItem = self["attr"..i]
  202. if attrItem then
  203. attrItem.uIEffectCfg:Clean()
  204. end
  205. end
  206. self.bg.uIEffectCfg:Clean()
  207. end
  208. function UIFashionLvUpView:OnDispose()
  209. self.controller:OnDispose()
  210. end
  211. return UIFashionLvUpView