---@class KLSkillBtnItem:UIKmlLuaPanelBase ---@field view KLSkillBtnItemView ---@field baseUI KLMainAttackPanel local KLSkillBtnItem = class(UIKmlLuaPanelBase) local this = KLSkillBtnItem ---创建时调用一次 function this:Init() self.btnType=ESkillBtnType.NormalSkillBtn end ---创建或者刷新界面数据时调用 function this:Refresh() end function this:UpdateUI(skillId) GUI:SetCirclebar_startper(self.view.Img_cdTime, 0) GUI:Text_setString(self.view.cdTime, "") GUI:SetActive(self.view.selectBg, LoginManager.selectSkillId and LoginManager.selectSkillId.value~=0 and LoginManager.selectSkillId.value==skillId) GUI:SetActive(self.view.indexText, self.index and self.index~=6) if self.index and self.index~=6 then self.view.indexText:SetText(tostring(self.index)) else GUI:SetActive(self.view.selectBg,true) end self.skillId = skillId or 0 local spriteName = "" if self.skillId > 0 then ---@type Skill local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId) local skillLv = skill and skill.level or 1 ---@type cfg_skill_info_column local tbl = SL:GetConfigMultiKeys('cfg_skill_info', self.skillId, skillLv, 'skillID', 'skillLevel') spriteName = string.isNullOrEmpty(tbl.icon) and "" or tbl.icon end GUI:Image_loadTexture(self.view.SkillIcon, spriteName, "Atlas/UIOutSkillIcon.spriteatlas") end function this:RefreshSelectBg() GUI:SetActive(self.view.selectBg, LoginManager.selectSkillId and LoginManager.selectSkillId.value==self.skillId or(self.btnType==ESkillBtnType.SelectSkillBtn) ) end ---注册UI事件和服务器消息 function this:RegistEvents() --GUI:AddOnTouchEvent(self.view.BtnSkill, self, self.OnTouchEvent) GUI:AddOnClickEvent(self.view.BtnSkill, self, self.BtnSkillOnClick) SL:RegisterLUAEvent(Event.Skill_CDing, self.OnSkillCDing, self) end ---@param skill Skill function this:OnSkillCDing(_, skill) if self.skillId ~= skill.skillId then return end self.remainCdTime = skill:LeftCDTime() if skill.curCDTime / 1000 ~= self.cdTime then self.cdTime = skill.curCDTime / 1000 end if not self.cdTime then return end if self.remainCdTime / self.cdTime <= 0.05 then GUI:SetCirclebar_startper(self.view.Img_cdTime, 0) else local startper = self.remainCdTime/self.cdTime *100 startper = math.floor(startper) GUI:SetCirclebar_startper(self.view.Img_cdTime, startper) GUI:SetCirclebar_time(self.view.Img_cdTime, self.remainCdTime) end end function this:BtnSkillOnClick() ---普通技能按钮 if self.btnType==ESkillBtnType.NormalSkillBtn then ---空技能点击无反应 if self.skillId == 0 then return end ---点击之后将右键技能设置为该技能 LoginManager.selectSkillId:Set(self.skillId) ---抛出技能改变事件,用于刷新 SL:onLUAEvent(LUA_EVENT_SelectSkill_Change) else ---选择技能按钮 GUI:UIPanel_Open("dev/outui/Skill/Panel/KLSkillSelect/KLSkillSelectPanel") end end ---@param kmlCtrl UIKmlLuaControl ---@param eventType EUIEventName function this:OnTouchEvent(kmlCtrl, eventType, args) return self.baseUI:OnTouchEvent(kmlCtrl, eventType, args) end function this:Close() end return this