UIFashionWashView.lua 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. local UIFashionWashView = require("UIFashion/UIFashionWashView_Generate")
  2. local CostItemCtr = require("Common/CostItemCtr")
  3. local washCost
  4. function UIFashionWashView:OnAwake(data)
  5. self.controller = require("UIFashion/UIFashionWashCtr"):new()
  6. self.controller:Init(self)
  7. self.controller:SetData(data)
  8. end
  9. function UIFashionWashView:AddEventListener()
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FASHION_WASH_CHANGE, self, self.RefreshNewAttrs)
  12. end
  13. function UIFashionWashView:FillContent(data, uiBase)
  14. self.uiBase = uiBase
  15. local gameObject = self.uiBase:GetRoot()
  16. if gameObject ~= nil then
  17. self.gameObject = gameObject
  18. self.transform = gameObject.transform
  19. end
  20. self:InitGenerate(self.transform, data)
  21. self:Init()
  22. end
  23. function UIFashionWashView:Init()
  24. local val = GlobalConfig.Instance:GetConfigStrValue(299)
  25. if val ~= "" and val ~= nil then
  26. washCost = CommonUtil.DeserializeGlobalStrToTable(val)
  27. end
  28. end
  29. function UIFashionWashView:OnPageInEnd()
  30. self.super.OnPageInEnd(self)
  31. self:RefreshNewAttrs()
  32. end
  33. function UIFashionWashView:RefreshNewAttrs()
  34. self:RefreshAttrs()
  35. self:RefreshCosts()
  36. self:RefreshBottom()
  37. end
  38. function UIFashionWashView:RefreshAttrs()
  39. local fashionId = self.controller:GetData()
  40. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
  41. local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(fashionId)
  42. if not fashionCfgData or not fashionLogicData then
  43. return
  44. end
  45. local attrs = fashionLogicData.attrs
  46. local resetAttrs = fashionLogicData.resetAttrs
  47. for i = 1, 5 do
  48. local attrItem = self["washAttrItem"..i]
  49. if attrItem then
  50. local attr = attrs and attrs[i] or nil
  51. if attr then
  52. local jobType = attr.jobType
  53. local attrId = attr.attrId
  54. local attrValue = attr.value
  55. local jobName = self.controller:GetJobTypeName(jobType)
  56. attrItem.propertyItem1.prName.text.text = jobName..I18N.SetLanguageValue(CommonUtil.HeroAttrFormatName(attrId, attrValue))
  57. attrItem.propertyItem1.number.text.text = "+"..attrValue
  58. end
  59. local resetAttr = resetAttrs and resetAttrs[i] or nil
  60. attrItem.propertyItem2.prName:SetActive(resetAttr ~= nil)
  61. attrItem.propertyItem2.number:SetActive(resetAttr ~= nil)
  62. attrItem.propertyItem2.random:SetActive(resetAttr == nil)
  63. if resetAttr then
  64. local jobType = resetAttr.jobType
  65. local attrId = resetAttr.attrId
  66. local attrValue = resetAttr.value
  67. local jobName = self.controller:GetJobTypeName(jobType)
  68. attrItem.propertyItem2.prName.text.text = jobName..I18N.SetLanguageValue(CommonUtil.HeroAttrFormatName(attrId, attrValue))
  69. attrItem.propertyItem2.number.text.text = "+"..attrValue
  70. if attrItem.uIEffectCfg and not attrItem.uIEffectCfg.Ready then
  71. attrItem.uIEffectCfg:LoadEffect()
  72. end
  73. if attrItem.uIEffectCfg then
  74. attrItem.uIEffectCfg:HideEffect("FX_UI_TuPo_New",attrItem.fx.transform)
  75. attrItem.uIEffectCfg:ShowEffect("FX_UI_TuPo_New",attrItem.fx.transform)
  76. end
  77. end
  78. attrItem:SetActive(attr ~= nil)
  79. end
  80. end
  81. end
  82. local resLack = {}
  83. function UIFashionWashView:RefreshCosts()
  84. local fashionId = self.controller:GetData()
  85. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
  86. local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(fashionId)
  87. if not fashionCfgData or not fashionLogicData then
  88. return
  89. end
  90. for i = 1, 3 do
  91. local costItem = self["cost"..i]
  92. if costItem then
  93. costItem:SetActive(false)
  94. end
  95. end
  96. local cost = washCost[fashionCfgData.FashionQuality]
  97. local costItem = self.cost1
  98. if costItem then
  99. costItem:SetActive(cost ~= nil)
  100. if cost then
  101. local cfgId = tonumber(cost[1])
  102. local num = tonumber(cost[2])
  103. local data = {cfgId = cfgId, cost = num}
  104. CostItemCtr:SetData(self, costItem, data, self, self.ShowItemTips)
  105. resLack[1] = {isLack = false, cfgId = cfgId}
  106. resLack[1].isLack = CommonUtil.ResLackErrorNotice(cfgId, num, true)
  107. end
  108. end
  109. end
  110. function UIFashionWashView:RefreshBottom()
  111. local fashionId = self.controller:GetData()
  112. local fashionCfgData = ManagerContainer.CfgMgr:GetFashionById(fashionId)
  113. local fashionLogicData = ManagerContainer.DataMgr.FashionData:GetFashionById(fashionId)
  114. if not fashionCfgData or not fashionLogicData then
  115. return
  116. end
  117. local resetAttrs = fashionLogicData.resetAttrs
  118. local resetState = #resetAttrs > 0
  119. self.btnWash:SetActive(not resetState)
  120. self.btnWashAgain:SetActive(resetState)
  121. self.btnKeep:SetActive(resetState)
  122. end
  123. function UIFashionWashView:ShowItemTips(button, params)
  124. ManagerContainer.LuaUIMgr:OpenTips(params[0])
  125. end
  126. function UIFashionWashView:RemoveEventListener()
  127. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  128. end
  129. function UIFashionWashView:AddUIEventListener()
  130. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnClickClose)
  131. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnClickClose)
  132. self.uiBase:AddButtonEventListener(self.btnWash.button, self, self.OnClickWashBtn, false)
  133. self.uiBase:AddButtonEventListener(self.btnWashAgain.button, self, self.OnClickWashBtn, false)
  134. self.uiBase:AddButtonEventListener(self.btnKeep.button, self, self.OnClickWashBtn, true)
  135. end
  136. function UIFashionWashView:OnClickClose()
  137. self:UIClose()
  138. end
  139. function UIFashionWashView:OnClickWashBtn(button, params)
  140. local state = params[0]
  141. if not state then
  142. for i = 1,#resLack do
  143. if resLack[i].isLack then
  144. CommonUtil.ItemNotEnoughHandle(resLack[i].cfgId)
  145. return
  146. end
  147. end
  148. end
  149. self.controller:SendFashionWash(state)
  150. end
  151. function UIFashionWashView:OnHide()
  152. end
  153. function UIFashionWashView:OnShow(data)
  154. self.controller:SetData(data)
  155. end
  156. function UIFashionWashView:OnClose()
  157. for i = 1, 5 do
  158. local attrItem = self["washAttrItem"..i]
  159. if attrItem then
  160. attrItem.uIEffectCfg:Clean()
  161. end
  162. end
  163. end
  164. function UIFashionWashView:OnDispose()
  165. self.controller:OnDispose()
  166. end
  167. return UIFashionWashView