UIArtifactTipsView.lua 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. local UIArtifactTipsView = require("UIArtifactTips/UIArtifactTipsView_Generate")
  2. local IconItemCtr = require ("Common.IconItemCtr")
  3. function UIArtifactTipsView:OnAwake(data)
  4. self.controller = require("UIArtifactTips/UIArtifactTipsCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIArtifactTipsView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SKILL_EQUIP_SLOT_LVUP_REFRESH, self, self.LvupSuccess)
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SKILL_EQUIP_LV_UP_REFRESH, self, self.Refresh)
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.ACTOR_SERVER_CHANGE_ATTRS, self, self.RefreshAttr)
  13. end
  14. function UIArtifactTipsView:FillContent(data, uiBase)
  15. self.uiBase = uiBase
  16. local gameObject = self.uiBase:GetRoot()
  17. if gameObject ~= nil then
  18. self.gameObject = gameObject
  19. self.transform = gameObject.transform
  20. end
  21. self:InitGenerate(self.transform, data)
  22. self:Init()
  23. end
  24. function UIArtifactTipsView:Init()
  25. self.fx_ui_refine_success.uIParticle:PlayCachedParticalSystem(false)
  26. self:Refresh()
  27. end
  28. function UIArtifactTipsView:Refresh()
  29. self:RefreshTop()
  30. self:RefreshCenter()
  31. local enterFrom = self.controller:GetEnterFrom()
  32. local fromRole = enterFrom == Enum.UIPageName.UIRoleMain1
  33. self.cost:SetActive(fromRole)
  34. self.btnBox:SetActive(fromRole)
  35. self.slotLvRoot:SetActive(fromRole)
  36. self.btnChange:SetActive(fromRole)
  37. self.labelBox:SetActive(fromRole)
  38. if fromRole then
  39. self:RefreshJobInfo()
  40. self:RefreshBottom()
  41. else
  42. end
  43. end
  44. function UIArtifactTipsView:LvupSuccess()
  45. self.fx_ui_refine_success.uIParticle:PlayCachedParticalSystem(true)
  46. self:Refresh()
  47. end
  48. function UIArtifactTipsView:RefreshTop()
  49. local skillEquipData = self.controller:GetSkillEquipData()
  50. local cfgId = skillEquipData.cfgId
  51. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(cfgId)
  52. local itemCfgData = ManagerContainer.CfgMgr:GetItemById(cfgId)
  53. IconItemCtr:SetData(self, self.skillEquipSlot.iconItem, skillEquipData, Enum.ItemIEnterType.Bag)
  54. self.skillEquipSlot.iconItem:SetActive(true)
  55. self.textName.text.text = I18N.T(cfgData.Name)
  56. self.desTxt.text.text = I18N.T(itemCfgData.Describe)
  57. end
  58. function UIArtifactTipsView:RefreshJobInfo()
  59. local heroId = self.controller:GetHeroId()
  60. local heroCfgId = self.controller:GetHeroCfgId()
  61. local nickname = self.controller:GetHeroNickname()
  62. local jobIcon
  63. if heroId == 1 then
  64. local jobData = ManagerContainer.CfgMgr:GetJobDataById(heroCfgId)
  65. jobIcon = jobData.JobIcon
  66. else
  67. local heroCfgData = ManagerContainer.CfgMgr:GetPartnerDataById(heroCfgId)
  68. jobIcon = heroCfgData.JobIcon
  69. end
  70. CommonUtil.LoadIcon(self, jobIcon, function (sprite)
  71. self.jobIcon.image.sprite = sprite
  72. end)
  73. local name
  74. if heroId == 1 then
  75. local cfgData = ManagerContainer.CfgMgr:GetJobDataById(heroCfgId)
  76. if nickname == nil then
  77. name = CommonUtil.GetHeroJobAndNameByUid(heroId, heroCfgId)
  78. else
  79. if cfgData == nil then
  80. name = nickname
  81. else
  82. name = I18N.T(cfgData.JobName) .. nickname
  83. end
  84. end
  85. else
  86. name = CommonUtil.GetHeroJobAndNameByUid(heroId, heroCfgId)
  87. end
  88. self.heroName.text.text = name
  89. end
  90. local function IsTheJob(jobData, skillEquipCfgData)
  91. if not jobData then
  92. return false
  93. end
  94. return jobData.JobType == skillEquipCfgData.JobType and jobData.JobBranch == skillEquipCfgData.JobBranch and jobData.JobStage == skillEquipCfgData.JobStage
  95. end
  96. function UIArtifactTipsView:RefreshCenter()
  97. local enterFrom = self.controller:GetEnterFrom()
  98. local canActive = enterFrom == Enum.UIPageName.UIRoleMain1 or enterFrom == Enum.UIPageName.UIArtifactNotesTips
  99. local heroId = self.controller:GetHeroId()
  100. local heroCfgId = self.controller:GetHeroCfgId()
  101. local jobData, skillData, slotSkills, unLockSkillMap
  102. local heroData = CommonUtil.GetHeroLogicDataByUid(heroId)
  103. if heroData then
  104. skillData = heroData.skillData
  105. slotSkills = skillData.slotSkills
  106. unLockSkillMap = skillData.unlockSkillMap
  107. if heroId == 1 then
  108. jobData = ManagerContainer.CfgMgr:GetJobDataById(heroCfgId)
  109. else
  110. jobData = ManagerContainer.CfgMgr:GetPartnerDataById(heroCfgId)
  111. end
  112. end
  113. local skillEquipData = self.controller:GetSkillEquipData()
  114. local cfgId = skillEquipData.cfgId
  115. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(cfgId)
  116. for i = 1, 5 do
  117. local item = self["artifactPropertyItem"..i]
  118. local rp = item.rp
  119. local data = cfgData.ArtifacFuncId[i]
  120. item:SetActive(i <= skillEquipData.maxStarLv)
  121. if i <= skillEquipData.maxStarLv then
  122. local condition1, condition2, condition3 = false, false, false
  123. if heroId then
  124. local oldSkillId = heroId == 1 and data[2] or data[3]
  125. condition1 = unLockSkillMap[oldSkillId] ~= nil
  126. condition2 = false
  127. for i = 1, #slotSkills do
  128. if slotSkills[i].isUnlock and slotSkills[i].skillId == oldSkillId then
  129. condition2 = true
  130. break
  131. end
  132. end
  133. end
  134. condition3 = data ~= nil and i <= skillEquipData.starLv
  135. item.star:SetActive(condition3)
  136. local content = I18N.T(cfgData.FuncDesc[i])
  137. if condition3 then
  138. content = string.format(Constant.GreenColorText,content)
  139. else
  140. content = string.format(Constant.GrayColorText, content)
  141. end
  142. local isCorrect = IsTheJob(jobData, cfgData)
  143. if not isCorrect then
  144. content = content..I18N.SetLanguageValue("ArtifactEmployTips", I18N.T(cfgData.JobName))
  145. end
  146. item.dsc.text.text = content
  147. item.btnActivation:SetActive((i == (skillEquipData.starLv + 1)) and canActive)
  148. self.uiBase:AddButtonUniqueEventListener(item.btnActivation.button, self, self.OnActivationClick, i)
  149. local canNotice = not condition1 or not condition2 or not condition3
  150. item.button.enabled = canNotice and canActive and isCorrect
  151. rp:SetActive(canNotice and canActive and isCorrect)
  152. self.uiBase:AddButtonUniqueEventListener(item.button, self, self.OnShowNotice, i, condition1, condition2, condition3)
  153. end
  154. end
  155. end
  156. function UIArtifactTipsView:RefreshBottom()
  157. local skillEquipData = self.controller:GetSkillEquipData()
  158. self.slotLv.text.text = skillEquipData.slotLv
  159. self:RefreshAttr()
  160. self:RefreshCost()
  161. end
  162. --刷新神威
  163. function UIArtifactTipsView:RefreshAttr()
  164. local skillEquipData = self.controller:GetSkillEquipData()
  165. local num = skillEquipData.slotAttrs[Enum.HeroAttrType.RealHurt] or 0
  166. self.slotNum.text.text = "+"..num
  167. end
  168. local lackRes
  169. function UIArtifactTipsView:RefreshCost()
  170. local skillEquipData = self.controller:GetSkillEquipData()
  171. local cost = ManagerContainer.CfgMgr:GetArtifactExpCfgCostByLv(skillEquipData.slotLv)
  172. self.cost:SetActive(cost ~= nil)
  173. self.btnBox:SetActive(cost ~= nil)
  174. lackRes = {}
  175. if cost then
  176. for i = 1, 2 do
  177. local item = self["cost"..i]
  178. local cst = cost[i]
  179. item:SetActive(cst ~= nil)
  180. if cst then
  181. local cfgData = ManagerContainer.CfgMgr:GetItemById(cst[1])
  182. if cfgData then
  183. item.icon.image.enabled = false
  184. local ownNum = CommonUtil.GetOwnResCountByItemId(cst[1])
  185. if cfgData.Icon and cfgData.Icon ~= '' then
  186. CommonUtil.LoadIcon(self, cfgData.Icon, function (sprite)
  187. item.icon.image.sprite = sprite
  188. item.icon.image.enabled = true
  189. end, 'ItemIcon'..i)
  190. end
  191. if ownNum < cst[2] then
  192. lackRes[i] = {cst[1], true}
  193. item.text.text.text = string.format(Constant.PinkColorText, cst[2])
  194. else
  195. lackRes[i] = {cst[1], false}
  196. item.text.text.text = cst[2]
  197. end
  198. else
  199. item.text.text.text = ''
  200. end
  201. end
  202. end
  203. end
  204. end
  205. function UIArtifactTipsView:RemoveEventListener()
  206. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  207. end
  208. function UIArtifactTipsView:AddUIEventListener()
  209. self.uiBase:AddButtonEventListener(self.AnyBtn.button, self, self.OnUICloseClick)
  210. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnUICloseClick)
  211. self.uiBase:AddButtonEventListener(self.btnRefine.button, self, self.OnSlotUpClick)
  212. self.uiBase:AddButtonEventListener(self.btnChange.button, self, self.OnChangeClick)
  213. self.uiBase:AddButtonEventListener(self.rule.button, self, self.OnClickPlayRuleBtn)
  214. end
  215. function UIArtifactTipsView:OnClickPlayRuleBtn()
  216. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', "ArtifactNatureTips"})
  217. end
  218. function UIArtifactTipsView:OnUICloseClick()
  219. self:UIClose()
  220. end
  221. function UIArtifactTipsView:OnActivationClick(button, params)
  222. local skillEquipData = self.controller:GetSkillEquipData()
  223. local heroId = self.controller:GetHeroId()
  224. local heroCfgId = self.controller:GetHeroCfgId()
  225. local nickname = self.controller:GetHeroNickname()
  226. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIArtifactStarUp, {skillEquipData, heroId, heroCfgId, nickname})
  227. end
  228. function UIArtifactTipsView:OnShowNotice(button, params)
  229. local idx = params[0]
  230. local condition1 = params[1]
  231. local condition2 = params[2]
  232. local condition3 = params[3]
  233. local skillEquipData = self.controller:GetSkillEquipData()
  234. local heroId = self.controller:GetHeroId()
  235. local cfgId = skillEquipData.cfgId
  236. local cfgData = ManagerContainer.CfgMgr:GetArtifactCfgDataByCfgId(cfgId)
  237. if not cfgData or not skillEquipData then return end
  238. local data = {heroId = heroId, skillEquipData = skillEquipData, idx = idx, condition1 = condition1, condition2 = condition2, condition3 = condition3}
  239. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIArtifactNotesTips, data)
  240. end
  241. function UIArtifactTipsView:OnChangeClick()
  242. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIEquipList, self.controller:GetData())
  243. end
  244. function UIArtifactTipsView:OnSlotUpClick()
  245. for i = 1, #lackRes do
  246. if lackRes[i][2] then
  247. CommonUtil.ItemNotEnoughHandle(lackRes[i][1])
  248. return
  249. end
  250. end
  251. self.controller:SendSlotUpReq()
  252. end
  253. function UIArtifactTipsView:OnHide()
  254. end
  255. function UIArtifactTipsView:OnShow(data)
  256. self.controller:SetData(data)
  257. end
  258. function UIArtifactTipsView:OnClose()
  259. end
  260. function UIArtifactTipsView:OnDispose()
  261. self.controller:OnDispose()
  262. end
  263. return UIArtifactTipsView