KLSkillBtnItem.lua 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. end
  9. ---创建或者刷新界面数据时调用
  10. function this:Refresh()
  11. GUI:Text_setString(self.view.cdTime, "")
  12. end
  13. function this:UpdateUI(skillId, isLock)
  14. GUI:SetActive(self.view.selectBg, false)
  15. self.skillId = skillId or 0
  16. local spriteName = ""
  17. GUI:setVisible(self.view.lockImg, false)
  18. GUI:setVisible(self.view.lockText, false)
  19. if self.skillId > 0 then
  20. ---@type Skill
  21. local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId)
  22. if skill then
  23. local skillLv = skill and skill.level or 1
  24. ---@type cfg_skill_info_column
  25. local tbl = SL:GetConfigMultiKeys('cfg_skill_info', self.skillId, skillLv, 'skillID', 'skillLevel')
  26. spriteName = string.isNullOrEmpty(tbl.icon) and "" or tbl.icon
  27. if InfoManager.shapeShiftCardInfo:isShiftMonster() then
  28. local lockSkill = InfoManager.shapeShiftCardInfo:GetLockShiftSkill()
  29. if isLock then
  30. GUI:setVisible(self.view.lockImg, true)
  31. GUI:setVisible(self.view.lockText, true)
  32. GUI:Text_setString(self.view.lockText, "Lv." .. lockSkill[skillId] .. "解锁")
  33. end
  34. end
  35. else
  36. self.skillId = 0
  37. end
  38. end
  39. GUI:SetCirclebar_startper(self.view.Img_cdTime, 0)
  40. GUI:Text_setString(self.view.cdTime, "")
  41. GUI:Image_loadTexture(self.view.SkillIcon, spriteName, "Atlas/UIOutSkillIcon.spriteatlas")
  42. end
  43. ---注册UI事件和服务器消息
  44. function this:RegistEvents()
  45. GUI:AddOnTouchEvent(self.view.BtnSkill, self, self.OnTouchEvent)
  46. GUI:AddOnClickEvent(self.view.BtnSkill, self, self.BtnSkillOnClick)
  47. SL:RegisterLUAEvent(Event.Skill_CDing, self.OnSkillCDing, self)
  48. end
  49. ---@param skill Skill
  50. function this:OnSkillCDing(_, skill)
  51. if self.skillId ~= skill.skillId then
  52. return
  53. end
  54. self.remainCdTime = skill:LeftCDTime()
  55. if skill.curCDTime / 1000 ~= self.cdTime then
  56. self.cdTime = skill.curCDTime / 1000
  57. end
  58. if not self.cdTime then
  59. return
  60. end
  61. if self.remainCdTime / self.cdTime <= 0.05 then
  62. GUI:SetCirclebar_startper(self.view.Img_cdTime, 0)
  63. GUI:Text_setString(self.view.cdTime, "")
  64. else
  65. local startper = self.remainCdTime / self.cdTime * 100
  66. startper = math.floor(startper)
  67. GUI:SetCirclebar_startper(self.view.Img_cdTime, startper)
  68. GUI:SetCirclebar_time(self.view.Img_cdTime, self.remainCdTime)
  69. GUI:Text_setString(self.view.cdTime, string.format("%0.1f", self.remainCdTime))
  70. end
  71. end
  72. function this:BtnSkillOnClick()
  73. if self.skillId == 0 then
  74. return GUI:UIPanel_Open("dev/ui/Skill/Panel/KLUISkillInfo/KLUISkillInfoPanel", nil, nil, ESkillUIShowPage.Setting)
  75. end
  76. ---@type Skill
  77. local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId)
  78. if not skill or not skill:IsCDEnough() then
  79. return
  80. end
  81. if skill.skillTbl.releaseType == ESkillReleaseType.NeedNoTarget then
  82. GUI:SetActive(self.view.selectBg, true)
  83. --SceneTouch.selectSkill = self.skillId
  84. SL.Scene:SetSelectSkill(self.skillId)
  85. --RoleManager.me:SelectAttackModel(skill.skillInfoTbl.releaseRange[1])
  86. SL:SelectAttackModel(skill.skillInfoTbl.releaseRange[1])
  87. else
  88. ---@type CheckIsCanSkillDataType
  89. local skillDat = {
  90. skillId = self.skillId,
  91. }
  92. SL:onLUAEvent(Event.ReleaseSkill, skillDat)
  93. end
  94. end
  95. ---@param kmlCtrl UIKmlLuaControl
  96. ---@param eventType EUIEventName
  97. function this:OnTouchEvent(kmlCtrl, eventType, args)
  98. return self.baseUI:OnTouchEvent(kmlCtrl, eventType, args)
  99. end
  100. function this:Close()
  101. end
  102. return this