UISkillAdvanceView.lua 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. local UISkillAdvanceView = require("UISkill/UISkillAdvanceView_Generate")
  2. local ColorExtension = require("ColorExtension")
  3. function UISkillAdvanceView:OnAwake(data)
  4. self.controller = require("UISkill/UISkillAdvanceCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UISkillAdvanceView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  10. end
  11. function UISkillAdvanceView:FillContent(data, uiBase)
  12. self.uiBase = uiBase
  13. local gameObject = self.uiBase:GetRoot()
  14. if gameObject ~= nil then
  15. self.gameObject = gameObject
  16. self.transform = gameObject.transform
  17. end
  18. self:InitGenerate(self.transform, data)
  19. self:Init()
  20. end
  21. function UISkillAdvanceView:Init()
  22. local data = self.controller:GetData()
  23. self:SetTagBox(1,data[1].id,data[1].lv,true)
  24. self:SetTagBox(2,data[2].id,data[2].lv,false)
  25. self.skillPreviewItem1.scrollView.scrollRect.enabled = false
  26. self.skillPreviewItem2.scrollView.scrollRect.enabled = false
  27. end
  28. function UISkillAdvanceView:RemoveEventListener()
  29. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  30. end
  31. function UISkillAdvanceView:AddUIEventListener()
  32. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  33. self.uiBase:AddButtonUniqueEventListener(self.btnCancel.button, self, self.OnClickCloseBtn)
  34. self.uiBase:AddButtonUniqueEventListener(self.btnSkillAdvance.button, self, self.OnClickAdvanceBtn)
  35. end
  36. function UISkillAdvanceView:OnPageInEnd()
  37. self.super.OnPageInEnd(self)
  38. self.skillPreviewItem1.scrollView.scrollRect.enabled = true
  39. self.skillPreviewItem2.scrollView.scrollRect.enabled = true
  40. end
  41. function UISkillAdvanceView:SetTagBox(idx,skillId,lv,isNext)
  42. local skillPreviewItem = self["skillPreviewItem"..idx]
  43. if not skillPreviewItem then
  44. return
  45. end
  46. local skillCfgData = ManagerContainer.CfgMgr:GetSkillCfgById(skillId)
  47. skillPreviewItem.skillItem.icon.image.sprite = nil
  48. if skillCfgData then
  49. if skillCfgData.Icon then
  50. CommonUtil.LoadIcon(self, skillCfgData.Icon, function (sprite)
  51. skillPreviewItem.skillItem.icon.image.sprite = sprite
  52. end, skillPreviewItem, "SkillIconAsyncIdx")
  53. end
  54. skillPreviewItem.skillItem.num.text.text = (I18N.SetLanguageValue('Lv') .. tostring(lv))
  55. skillPreviewItem.skillName.text.text = I18N.SetLanguageValue(skillCfgData.Name)
  56. local skillTreeCfgData
  57. local IsLeaderHero = math.floor(skillId / 10000) == 1
  58. if IsLeaderHero then
  59. skillTreeCfgData = ManagerContainer.CfgMgr:GetSkillTreeCfgById(skillId)
  60. else
  61. skillTreeCfgData = ManagerContainer.CfgMgr:GetParterSkillTreeCfgById(skillId)
  62. end
  63. local quality = skillTreeCfgData and skillTreeCfgData.SkillQuality or 0
  64. if quality ~= 0 then
  65. CommonUtil.LoadIcon(self, Constant.Quality_Frame_Icons[quality], function (sprite)
  66. skillPreviewItem.skillItem.frame.image.sprite = sprite
  67. end)
  68. else
  69. CommonUtil.LoadIcon(self, "FrameNew/frame_item_gray", function (sprite)
  70. skillPreviewItem.skillItem.frame.image.sprite = sprite
  71. end)
  72. end
  73. local skillShowData = ManagerContainer.CfgMgr:GetSkillShowCfgById(skillId)
  74. local tags = nil
  75. local num = 0
  76. if skillShowData then
  77. tags = skillShowData.Label
  78. if tags then
  79. if type(tags[1]) == 'number' then
  80. tags = {tags}
  81. end
  82. num = #tags
  83. end
  84. end
  85. for i = 1, 4 do
  86. local skillTagItem = skillPreviewItem['skillTagItem' .. i]
  87. if skillTagItem then
  88. if i <= num then
  89. local tagId = tags[i][1]
  90. local colorId = tags[i][2]
  91. skillTagItem:SetActive(true)
  92. skillTagItem.bgColorID.image.color = ColorExtension.HexStringToColor(I18N.SetLanguageValue('ColorID' .. tostring(colorId)))
  93. skillTagItem.textSkillID.uILocalizeScript:SetContent('SkillTagID' .. tostring(tagId))
  94. else
  95. skillTagItem:SetActive(false)
  96. end
  97. end
  98. end
  99. self:SetDesText(skillPreviewItem.desText,skillId,lv,isNext)
  100. else
  101. skillPreviewItem.skillItem.icon.image.sprite = nil
  102. skillPreviewItem.skillItem.num.text.text = ''
  103. skillPreviewItem.skillName.text.text = ''
  104. skillPreviewItem.skillTagItem1:SetActive(false)
  105. skillPreviewItem.skillTagItem2:SetActive(false)
  106. skillPreviewItem.skillTagItem3:SetActive(false)
  107. skillPreviewItem.skillTagItem4:SetActive(false)
  108. end
  109. end
  110. function UISkillAdvanceView:OnClickCloseBtn()
  111. self:UIClose()
  112. end
  113. function UISkillAdvanceView:OnClickAdvanceBtn()
  114. local data = self.controller:GetData()
  115. local curSkillId = data[1].id
  116. local heroId = data[3]
  117. local errorCode, itemCfgId = CommonUtil.CheckSkillCanAvance(heroId,curSkillId)
  118. if errorCode == 0 then
  119. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_SKILL_LEVEL_UP_REQ, {hero_id = heroId, skill_id=curSkillId})
  120. else
  121. if errorCode == 139 then
  122. CommonUtil.ItemNotEnoughHandle(itemCfgId, self.uiData.id)
  123. elseif errorCode == 200 then
  124. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('NeedAdvanceJobTips')
  125. elseif errorCode == 141 then
  126. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('LearnSkillCondition04')
  127. else
  128. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  129. end
  130. end
  131. self:UIClose()
  132. end
  133. function UISkillAdvanceView:SetDesText(desText,skillId,skillLv,isNext)
  134. local skillCfgId = CommonUtil.GetSkillCfgIdByIdAndLv(skillId, skillLv)
  135. local skillCfgData = ManagerContainer.CfgMgr:GetSkillLevelCfgById(skillCfgId)
  136. if skillCfgData then
  137. local descParam = skillCfgData.DescParam
  138. if descParam then
  139. if type(descParam) == 'table' then
  140. if isNext then
  141. local ls = {}
  142. local colorStr = '<color=' .. string.formatbykey('ColorID8') .. '>'
  143. for i = 1, #descParam do
  144. ls[i] = colorStr .. tostring(descParam[i]) .. '</color>'
  145. end
  146. descParam = ls
  147. end
  148. desText.text.text = string.formatbykey(skillCfgData.Desc, unpack(descParam))
  149. else
  150. if isNext then
  151. desText.text.text = string.formatbykey(skillCfgData.Desc, '<color=' .. I18N.formatbykey('ColorID8') .. '>' .. tostring(descParam) .. '</color>')
  152. else
  153. desText.text.text = string.formatbykey(skillCfgData.Desc, descParam)
  154. end
  155. end
  156. else
  157. desText.text.text = string.formatbykey(skillCfgData.Desc)
  158. end
  159. else
  160. desText.text.text = ''
  161. end
  162. end
  163. function UISkillAdvanceView:OnHide()
  164. end
  165. function UISkillAdvanceView:OnShow(data)
  166. self.controller:SetData(data)
  167. end
  168. function UISkillAdvanceView:OnClose()
  169. end
  170. function UISkillAdvanceView:OnDispose()
  171. self.controller:OnDispose()
  172. end
  173. return UISkillAdvanceView