UIBattleBossTipsView.lua 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. local UIBattleBossTipsView = require("UIBattle/UIBattleBossTipsView_Generate")
  2. function UIBattleBossTipsView:OnAwake(data)
  3. self.controller = require("UIBattle/UIBattleBossTipsCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIBattleBossTipsView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  9. end
  10. function UIBattleBossTipsView:FillContent(data, uiBase)
  11. self.uiBase = uiBase
  12. local gameObject = self.uiBase:GetRoot()
  13. if gameObject ~= nil then
  14. self.gameObject = gameObject
  15. self.transform = gameObject.transform
  16. end
  17. self:InitGenerate(self.transform, data)
  18. self:Init()
  19. self.TxtRectTrans.rectTransform.anchoredPosition = Vector2.zero
  20. end
  21. function UIBattleBossTipsView:Init()
  22. self.skillItemList = {}
  23. self.skillItemList[#self.skillItemList+1] = self.skillTemplate
  24. self.attrItemList = {}
  25. self:SetBossData()
  26. end
  27. function UIBattleBossTipsView:SetBossData()
  28. if self.controller:GetData() == nil then
  29. return
  30. end
  31. local bossActor = self.controller:GetData()
  32. local bossCfg = ManagerContainer.CfgMgr:GetNpcCfgById(bossActor.BaseId)
  33. if bossCfg == nil then
  34. return
  35. end
  36. self.bossLevel.text.text = tostring(bossActor.ShowLevel)
  37. self.bossName.text.text = I18N.T(bossCfg.Name)
  38. self.bossDesc.text.text = I18N.T(bossCfg.Desc)
  39. local natureCfg = ManagerContainer.CfgMgr:GetNatureDataById(bossCfg.NatureId)
  40. if natureCfg ~= nil then
  41. self.natureName.text.text =I18N.T(natureCfg.Name)
  42. CommonUtil.LoadIcon(self, natureCfg.Icon, function (sprite)
  43. self.natureImg.image.sprite = sprite
  44. end)
  45. end
  46. if bossCfg.Icon ~= nil and bossCfg.Icon ~= "" then
  47. CommonUtil.LoadIcon(self, bossCfg.Icon, function (sprite)
  48. self.bossImg.image.sprite = sprite
  49. self.bossImg.image:SetNativeSize()
  50. if bossCfg.IconOffset~= nil then
  51. local offset = Vector2(bossCfg.IconOffset[1],bossCfg.IconOffset[2])
  52. self.bossImg.rectTransform.anchoredPosition = offset
  53. end
  54. end)
  55. end
  56. if bossCfg.BgImg ~= nil and bossCfg.BgImg ~= "" then
  57. CommonUtil.LoadIcon(self, bossCfg.BgImg, function (sprite)
  58. self.bgImg.image.sprite = sprite
  59. end)
  60. end
  61. --筛除重复技能
  62. local tbSkill ={}
  63. if bossCfg.SkillIds ~= nil and #bossCfg.SkillIds > 0 then
  64. for i =1, #bossCfg.SkillIds do
  65. local skillid = bossCfg.SkillIds[i][1]
  66. local tbIndex = self:GetIndexBySkillId(skillid,bossCfg.SkillIds)
  67. if nil ~= tbIndex and #tbIndex >= 1 and i == tbIndex[1] then
  68. table.insert(tbSkill,bossCfg.SkillIds[i])
  69. end
  70. end
  71. end
  72. --添加被动技能
  73. if bossCfg.PassiveSkills ~= nil and #bossCfg.PassiveSkills > 0 then
  74. for i =1, #bossCfg.PassiveSkills do
  75. table.insert(tbSkill,bossCfg.PassiveSkills[i])
  76. end
  77. end
  78. if tbSkill ~= nil and #tbSkill > 0 then
  79. for i =1, #tbSkill do
  80. local skillItemLua = self:GetSkillItemLua(i)
  81. self:SetSkillData(skillItemLua,tbSkill[i][1],tbSkill[i][2])
  82. end
  83. else
  84. self.skillTemplate:SetActive(false)
  85. end
  86. local cursor = 1
  87. for i = 7, 16 do
  88. if i ~= 8 and i ~= 10 then
  89. local val = bossActor:GetAttr(i)
  90. local attrGo = self:GetAttrGo(cursor)
  91. if i == 9 then
  92. local valMagicAttack = bossActor:GetAttr(i+1)--魔攻
  93. if SDataUtil.InvConvert(val) < SDataUtil.InvConvert(valMagicAttack) then
  94. self:SetAttrData(attrGo,i+1,valMagicAttack)
  95. else
  96. self:SetAttrData(attrGo,i,val)
  97. end
  98. else
  99. self:SetAttrData(attrGo,i,val)
  100. end
  101. cursor = cursor + 1
  102. end
  103. end
  104. end
  105. --获取相同ID的索引
  106. function UIBattleBossTipsView:GetIndexBySkillId(skillid,tbSkills)
  107. local tbIndex = {}
  108. if tbSkills ~= nil and #tbSkills > 0 then
  109. for i =1, #tbSkills do
  110. if tbSkills[i][1] == skillid then
  111. table.insert(tbIndex,i)
  112. end
  113. end
  114. end
  115. return tbIndex
  116. end
  117. function UIBattleBossTipsView:GetAttrGo(idx)
  118. if idx <= #self.attrItemList then
  119. return self.attrItemList[idx]
  120. end
  121. local attrGo = UnityEngine.GameObject.Instantiate(self.attrTemp.gameObject)
  122. attrGo.name = "atrr" .. idx
  123. attrGo.transform:SetParent(self.atrrList.transform)
  124. attrGo.transform.localScale = Vector3(1,1,1)
  125. local rectTrans = attrGo:GetComponent(Enum.TypeInfo.RectTransform)
  126. rectTrans.anchoredPosition3D = Vector3(0,0,0)
  127. attrGo:SetActive(true)
  128. self.attrItemList[#self.attrItemList+1] = attrGo
  129. return attrGo
  130. end
  131. function UIBattleBossTipsView:SetAttrData(attrGo,attrId,attrVal)
  132. if attrGo == nil then
  133. return
  134. end
  135. local lbl = attrGo.transform:Find("Lbl")
  136. if lbl ~= nil then
  137. local txt = lbl:GetComponent(Enum.TypeInfo.Text)
  138. if txt ~= nil then
  139. txt.text = I18N.T("Attr_"..attrId)
  140. end
  141. end
  142. local val = attrGo.transform:Find("Val")
  143. if val ~= nil then
  144. local txt = val:GetComponent(Enum.TypeInfo.Text)
  145. if txt ~= nil then
  146. txt.text = CommonUtil.GetPreciseDecimal(SDataUtil.InvConvert(attrVal),0)
  147. end
  148. end
  149. end
  150. function UIBattleBossTipsView:GetSkillItemLua(idx)
  151. if idx <= #self.skillItemList then
  152. return self.skillItemList[idx]
  153. end
  154. local skillNode = UnityEngine.GameObject.Instantiate(self.skillTemplate.gameObject)
  155. local skillLua = CommonUtil.BindGridViewItem2Lua(self, "SkillItem", skillNode)
  156. skillLua.prefabName = "SkillItem"
  157. skillNode.name = "SkillItem"
  158. skillLua.transform:SetParent(self.skillList.transform)
  159. skillLua.transform.localScale = Vector3(1,1,1)
  160. skillLua.rectTransform.anchoredPosition3D = Vector3(0,0,0)
  161. skillLua:SetActive(true)
  162. self.skillItemList[#self.skillItemList+1] = skillLua
  163. return skillLua
  164. end
  165. function UIBattleBossTipsView:SetSkillData(skillLua,skillId,skillLv)
  166. if skillLua == nil then
  167. return
  168. end
  169. local skillCfg = ManagerContainer.CfgMgr:GetSkillCfgById(skillId)
  170. if skillCfg == nil then
  171. return
  172. end
  173. skillLua.num.text.text = I18N.T("Lv.") .. skillLv
  174. if skillCfg.Icon ~= nil and skillCfg.Icon ~= "" then
  175. CommonUtil.LoadIcon(self, skillCfg.Icon, function (sprite)
  176. skillLua.icon.image.sprite = sprite
  177. end)
  178. end
  179. skillLua:SetActive(true)
  180. self.uiBase:AddButtonUniqueEventListener(skillLua.icon.button, self, self.OnClickSkill, skillId,skillLv)
  181. end
  182. function UIBattleBossTipsView:OnClickSkill(btn,params)
  183. local skillId = params[0]
  184. local skillLv = params[1]
  185. local data = { tipsType = Enum.UITipsType.Skill, cfgId = skillId, num = skillLv }
  186. ManagerContainer.LuaUIMgr:OpenTips(data)
  187. end
  188. function UIBattleBossTipsView:RemoveEventListener()
  189. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  190. end
  191. function UIBattleBossTipsView:AddUIEventListener()
  192. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickClose)
  193. self.uiBase:AddButtonEventListener(self.closeBtn.button,self, self.OnClickClose)
  194. end
  195. function UIBattleBossTipsView:OnHide()
  196. end
  197. function UIBattleBossTipsView:OnShow(data)
  198. self.controller:SetData(data)
  199. self.TxtRectTrans.rectTransform.anchoredPosition = Vector2.zero
  200. end
  201. function UIBattleBossTipsView:OnClose()
  202. self:ClearGoes()
  203. end
  204. function UIBattleBossTipsView:OnDispose()
  205. self.controller:OnDispose()
  206. end
  207. function UIBattleBossTipsView:OnClickClose()
  208. ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
  209. end
  210. function UIBattleBossTipsView:ClearGoes()
  211. for i = 1, #self.attrItemList do
  212. CommonUtil.DestroyGO(self.attrItemList[i])
  213. end
  214. self.attrItemList = nil
  215. for i = 2, #self.skillItemList do
  216. CommonUtil.DestroyGO(self.skillItemList[i].gameObject)
  217. end
  218. self.skillItemList = nil
  219. CommonUtil.ClearGridViewItem(self,"SkillItem")
  220. end
  221. return UIBattleBossTipsView