KLSkillBtnItem.lua 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. ---@class KLSkillBtnItem:UIKmlLuaPanelBase
  2. ---@field view KLSkillBtnItemView
  3. ---@field baseUI KLMainAttackPanel
  4. local KLSkillBtnItem = class(UIKmlLuaPanelBase)
  5. local this = KLSkillBtnItem
  6. ---创建时调用一次
  7. function this:Init()
  8. self.btnType=ESkillBtnType.NormalSkillBtn
  9. end
  10. ---创建或者刷新界面数据时调用
  11. function this:Refresh()
  12. end
  13. function this:UpdateUI(skillId)
  14. GUI:SetCirclebar_startper(self.view.Img_cdTime, 0)
  15. GUI:Text_setString(self.view.cdTime, "")
  16. GUI:SetActive(self.view.selectBg, LoginManager.selectSkillId and LoginManager.selectSkillId.value~=0 and LoginManager.selectSkillId.value==skillId)
  17. GUI:SetActive(self.view.indexText, self.index and self.index~=6)
  18. if self.index and self.index~=6 then
  19. self.view.indexText:SetText(tostring(self.index))
  20. else
  21. GUI:SetActive(self.view.selectBg,true)
  22. end
  23. self.skillId = skillId or 0
  24. local spriteName = ""
  25. if self.skillId > 0 then
  26. ---@type Skill
  27. local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId)
  28. local skillLv = skill and skill.level or 1
  29. ---@type cfg_skill_info_column
  30. local tbl = SL:GetConfigMultiKeys('cfg_skill_info', self.skillId, skillLv, 'skillID', 'skillLevel')
  31. spriteName = string.isNullOrEmpty(tbl.icon) and "" or tbl.icon
  32. end
  33. GUI:Image_loadTexture(self.view.SkillIcon, spriteName, "Atlas/UIOutSkillIcon.spriteatlas")
  34. end
  35. function this:RefreshSelectBg()
  36. GUI:SetActive(self.view.selectBg, LoginManager.selectSkillId and LoginManager.selectSkillId.value==self.skillId or(self.btnType==ESkillBtnType.SelectSkillBtn) )
  37. end
  38. ---注册UI事件和服务器消息
  39. function this:RegistEvents()
  40. --GUI:AddOnTouchEvent(self.view.BtnSkill, self, self.OnTouchEvent)
  41. GUI:AddOnClickEvent(self.view.BtnSkill, self, self.BtnSkillOnClick)
  42. SL:RegisterLUAEvent(Event.Skill_CDing, self.OnSkillCDing, self)
  43. end
  44. ---@param skill Skill
  45. function this:OnSkillCDing(_, skill)
  46. if self.skillId ~= skill.skillId then return end
  47. self.remainCdTime = skill:LeftCDTime()
  48. if skill.curCDTime / 1000 ~= self.cdTime then
  49. self.cdTime = skill.curCDTime / 1000
  50. end
  51. if not self.cdTime then return end
  52. if self.remainCdTime / self.cdTime <= 0.05 then
  53. GUI:SetCirclebar_startper(self.view.Img_cdTime, 0)
  54. else
  55. local startper = self.remainCdTime/self.cdTime *100
  56. startper = math.floor(startper)
  57. GUI:SetCirclebar_startper(self.view.Img_cdTime, startper)
  58. GUI:SetCirclebar_time(self.view.Img_cdTime, self.remainCdTime)
  59. end
  60. end
  61. function this:BtnSkillOnClick()
  62. ---普通技能按钮
  63. if self.btnType==ESkillBtnType.NormalSkillBtn then
  64. ---空技能点击无反应
  65. if self.skillId == 0 then
  66. return
  67. end
  68. ---点击之后将右键技能设置为该技能
  69. LoginManager.selectSkillId:Set(self.skillId)
  70. ---抛出技能改变事件,用于刷新
  71. SL:onLUAEvent(LUA_EVENT_SelectSkill_Change)
  72. else
  73. ---选择技能按钮
  74. GUI:UIPanel_Open("dev/outui/Skill/Panel/KLSkillSelect/KLSkillSelectPanel")
  75. end
  76. end
  77. ---@param kmlCtrl UIKmlLuaControl
  78. ---@param eventType EUIEventName
  79. function this:OnTouchEvent(kmlCtrl, eventType, args)
  80. return self.baseUI:OnTouchEvent(kmlCtrl, eventType, args)
  81. end
  82. function this:Close()
  83. end
  84. return this