UIRoleStrengthView.lua 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. local UIRoleStrengthView = require("UIRoleMain/UIRoleStrengthView_Generate")
  2. local CostItemCtr = require("Common/CostItemCtr")
  3. local breakImgs = {"FrameNew/bg_label_corner_green", "FrameNew/bg_label_corner_blue", "FrameNew/bg_label_corner_purple", "FrameNew/bg_label_corner_gold", "FrameNew/bg_label_corner_red", "FrameNew/bg_label_corner_red2"}
  4. local canStrength = false
  5. local lackCoin = false
  6. local lackFate = false
  7. function UIRoleStrengthView:OnAwake(data)
  8. self.controller = require("UIRoleMain/UIRoleStrengthCtr"):new()
  9. self.controller:Init(self)
  10. self.controller:SetData(data)
  11. end
  12. function UIRoleStrengthView:AddEventListener()
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PARTNER_STRENGTH_SUCCESS, function()
  14. self:RefreshStrengthSuccess()
  15. end)
  16. end
  17. function UIRoleStrengthView:FillContent(data, uiBase)
  18. self.uiBase = uiBase
  19. local gameObject = self.uiBase:GetRoot()
  20. if gameObject ~= nil then
  21. self.gameObject = gameObject
  22. self.transform = gameObject.transform
  23. end
  24. self:InitGenerate(self.transform, data)
  25. self:Init()
  26. end
  27. function UIRoleStrengthView:Init()
  28. self:Refresh()
  29. end
  30. function UIRoleStrengthView:Refresh(newUp)
  31. local partnerId = self.controller:GetData()
  32. local partnerData = ManagerContainer.CfgMgr:GetPartnerDataById(partnerId)
  33. local cfgData = ManagerContainer.CfgMgr:GetParterProgressById(partnerData.ParterJob)
  34. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataById(partnerId)
  35. local strengthLv = logicData.strengthLevel
  36. local nextLv = strengthLv + 1
  37. local isMax = strengthLv >= cfgData.BreachTimes
  38. self.btnStrength:SetActive(strengthLv < cfgData.BreachTimes)
  39. self.max:SetActive(strengthLv >= cfgData.BreachTimes)
  40. self.labelBox:SetActive(strengthLv > 0)
  41. self.labelBox.text.text.text = I18N.T("BtnBreak").."+"..strengthLv
  42. if strengthLv > 0 then
  43. local breakImg = breakImgs[strengthLv]
  44. if not breakImg then
  45. breakImg = breakImgs[#breakImgs]
  46. end
  47. CommonUtil.LoadIcon(self, breakImg, function (sprite)
  48. self.labelBox.label.image.sprite = sprite
  49. self.labelBox.labelLt.image.sprite = sprite
  50. end)
  51. if newUp then
  52. self.labelBox.animator:Play("LabelChange")
  53. end
  54. end
  55. for i = 1, 6 do
  56. local item = self["strengthAttr"..i]
  57. item:SetActive(false)
  58. item.number2:SetActive(false)
  59. item.arrow:SetActive(false)
  60. if item.uIEffectCfg and not item.uIEffectCfg.Ready then
  61. item.uIEffectCfg:LoadEffect()
  62. end
  63. end
  64. --当前属性
  65. local nextAttributes = cfgData["BreachAttribute"..nextLv]
  66. if nextAttributes == nil then
  67. nextAttributes = cfgData["BreachAttribute"..cfgData.BreachTimes]
  68. end
  69. if nextAttributes == nil then
  70. return
  71. end
  72. nextAttributes = CommonUtil.DeserializeCfgItemList(nextAttributes)
  73. for i = 1, #nextAttributes do
  74. local attrId = nextAttributes[i][1]
  75. local num = logicData.attrs[attrId]
  76. local item = self["strengthAttr"..i]
  77. item:SetActive(true)
  78. item.text.text.text = I18N.T("Attr_" .. attrId)
  79. item.number.text.text = CommonUtil.HeroAttrFormatValueNoSign(attrId, num, true)
  80. if newUp then
  81. if item.uIEffectCfg then
  82. item.uIEffectCfg:ShowEffect("FX_UI_TuPo_New",item.fx.transform)
  83. end
  84. end
  85. end
  86. --下一突破
  87. if not isMax then
  88. for i = 1, #nextAttributes do
  89. local attrId = nextAttributes[i][1]
  90. local num = SDataUtil.Add(logicData.attrs[attrId], attrId > 21 and nextAttributes[i][2]*0.0001 or nextAttributes[i][2])
  91. local attrValue = attrId > 21 and CommonUtil.GetPreciseDecimal(num, 2) or SDataUtil.Div(num, 1)
  92. if attrValue == 0 then
  93. attrValue = 0.01
  94. end
  95. local item = self["strengthAttr"..i]
  96. item.number2.text.text = CommonUtil.HeroAttrFormatValueNoSign(attrId, attrValue, true)
  97. item.number2:SetActive(true)
  98. item.arrow:SetActive(true)
  99. end
  100. end
  101. self:RefreshCurRefineCost(cfgData, nextLv, isMax)
  102. end
  103. function UIRoleStrengthView:RefreshCurRefineCost(cfgData, nextLv, isMax)
  104. local nextMoneyCost, nextItemCost = 0,0
  105. if not isMax then
  106. nextMoneyCost = cfgData.BreachMoney[nextLv]
  107. nextItemCost = cfgData.BreachCost[nextLv]
  108. else
  109. nextMoneyCost = cfgData.BreachMoney[cfgData.BreachTimes]
  110. nextItemCost = cfgData.BreachCost[cfgData.BreachTimes]
  111. end
  112. local data = {cfgId = Enum.ItemType.Coin, cost = nextMoneyCost, isMax = isMax}
  113. local result = CostItemCtr:SetData(self, self.cost2, data, self, self.ShowItemTips)
  114. lackCoin = CommonUtil.ResLackErrorNotice(Enum.ItemType.Coin, nextMoneyCost, true)
  115. local data1 = {cfgId = nextItemCost[1], num = 0, cost = nextItemCost[2], isMax = isMax}
  116. local result1 = CostItemCtr:SetData(self, self.cost1, data1, self, self.ShowItemTips)
  117. lackFate = CommonUtil.ResLackErrorNotice(nextItemCost[1], nextItemCost[2], true)
  118. canStrength = result and result1 and not isMax
  119. end
  120. function UIRoleStrengthView:RefreshStrengthSuccess()
  121. local partnerId = self.controller:GetData()
  122. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataById(partnerId)
  123. local cfgData = ManagerContainer.CfgMgr:GetPartnerDataById(partnerId)
  124. local oldLogicData = CommonUtil.TableClone(logicData)
  125. oldLogicData.strengthLevel = oldLogicData.strengthLevel - 1
  126. local replaceParams = {StrengthLevel = logicData.strengthLevel - 1}
  127. local actorData = ManagerContainer.LuaActorDataMgr:GetActorsById(logicData.id);
  128. CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, actorData,false, actorData.HeadFrameId, nil, nil, nil, replaceParams)
  129. self.strengthSuccess:SetActive(true)
  130. self.transform:DOScale(1, 1):OnComplete(function ()
  131. --HeroHeadIcon:SetInactivationHeroIcon(self, cfgData, self.headItem, logicData)
  132. local actorData = ManagerContainer.LuaActorDataMgr:GetActorsById(logicData.id);
  133. CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, actorData,false,actorData.HeadFrameId)
  134. end)
  135. self.transform:DOScale(1, 4):OnComplete(function ()
  136. self.strengthSuccess:SetActive(false)
  137. self:Refresh(true)
  138. end)
  139. end
  140. function UIRoleStrengthView:RemoveEventListener()
  141. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  142. end
  143. function UIRoleStrengthView:AddUIEventListener()
  144. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  145. self.uiBase:AddButtonEventListener(self.btnClose.button, function ()
  146. self:UIClose()
  147. end)
  148. self.uiBase:AddButtonEventListener(self.AnyBtn.button, function ()
  149. self:UIClose()
  150. end)
  151. --self.uiBase:AddButtonEventListener(self.strengthSuccess.button, function ()
  152. -- self.strengthSuccess:SetActive(false)
  153. -- --self:UIClose()
  154. -- self:Refresh()
  155. --end)
  156. self.uiBase:AddButtonEventListener(self.btnStrength.button, function ()
  157. --if not canStrength then return end
  158. if lackCoin then
  159. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("4")
  160. return
  161. end
  162. if lackFate then
  163. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay("LackKnotOfFate")
  164. return
  165. end
  166. local partnerId = self.controller:GetData()
  167. local logicData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataById(partnerId)
  168. self.controller:SendStrengthReq(logicData.id)
  169. end)
  170. end
  171. function UIRoleStrengthView:ShowItemTips(button, params)
  172. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIItemTips, params[0])
  173. ManagerContainer.LuaUIMgr:OpenTips(params[0])
  174. end
  175. function UIRoleStrengthView:OnHide()
  176. end
  177. function UIRoleStrengthView:OnShow(data)
  178. self.controller:SetData(data)
  179. self:Init()
  180. end
  181. function UIRoleStrengthView:OnClose()
  182. end
  183. function UIRoleStrengthView:OnDispose()
  184. DG.Tweening.DOTween.Kill(self.transform)
  185. for i = 1, 6 do
  186. local item = self["strengthAttr"..i]
  187. item.uIEffectCfg:Clean()
  188. end
  189. end
  190. return UIRoleStrengthView