123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- ---@class KLSkillBtnItem:UIKmlLuaPanelBase
- ---@field view KLSkillBtnItemView
- ---@field baseUI KLMainAttackPanel
- local KLSkillBtnItem = class(UIKmlLuaPanelBase)
- local this = KLSkillBtnItem
- ---创建时调用一次
- function this:Init()
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- GUI:Text_setString(self.view.cdTime, "")
- end
- function this:UpdateUI(skillId, isLock)
- GUI:SetActive(self.view.selectBg, false)
- self.skillId = skillId or 0
- local spriteName = ""
- GUI:setVisible(self.view.lockImg, false)
- GUI:setVisible(self.view.lockText, false)
- if self.skillId > 0 then
- ---@type Skill
- local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId)
- if skill then
- 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
- if InfoManager.shapeShiftCardInfo:isShiftMonster() then
- local lockSkill = InfoManager.shapeShiftCardInfo:GetLockShiftSkill()
- if isLock then
- GUI:setVisible(self.view.lockImg, true)
- GUI:setVisible(self.view.lockText, true)
- GUI:Text_setString(self.view.lockText, "Lv." .. lockSkill[skillId] .. "解锁")
- end
- end
- else
- self.skillId = 0
- end
- end
- GUI:SetCirclebar_startper(self.view.Img_cdTime, 0)
- GUI:Text_setString(self.view.cdTime, "")
- GUI:Image_loadTexture(self.view.SkillIcon, spriteName, "Atlas/UIOutSkillIcon.spriteatlas")
- 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)
- GUI:Text_setString(self.view.cdTime, "")
- 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)
- GUI:Text_setString(self.view.cdTime, string.format("%0.1f", self.remainCdTime))
- end
- end
- function this:BtnSkillOnClick()
- if self.skillId == 0 then
- return GUI:UIPanel_Open("dev/ui/Skill/Panel/KLUISkillInfo/KLUISkillInfoPanel", nil, nil, ESkillUIShowPage.Setting)
- end
- ---@type Skill
- local skill = SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, self.skillId)
- if not skill or not skill:IsCDEnough() then
- return
- end
- if skill.skillTbl.releaseType == ESkillReleaseType.NeedNoTarget then
- GUI:SetActive(self.view.selectBg, true)
- --SceneTouch.selectSkill = self.skillId
- SL.Scene:SetSelectSkill(self.skillId)
- --RoleManager.me:SelectAttackModel(skill.skillInfoTbl.releaseRange[1])
- SL:SelectAttackModel(skill.skillInfoTbl.releaseRange[1])
- else
- ---@type CheckIsCanSkillDataType
- local skillDat = {
- skillId = self.skillId,
- }
- SL:onLUAEvent(Event.ReleaseSkill, skillDat)
- 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
|