local SkillDisplayCtrl = class("SkillDisplayCtrl", BaseCtrl) SkillDisplayCtrl._mapNodeConfig = { TMP_SkillName = {sComponentName = "TMP_Text"}, imgSubSkillIcon = {sComponentName = "Image"} } SkillDisplayCtrl._mapEventConfig = {} function SkillDisplayCtrl:Awake() end function SkillDisplayCtrl:FadeIn() end function SkillDisplayCtrl:FadeOut() end function SkillDisplayCtrl:OnEnable() self.animRoot = self.gameObject:GetComponent("Animator") self.canvasGroup = self.gameObject:GetComponent("CanvasGroup") local wait = function() coroutine.yield(CS.UnityEngine.WaitForEndOfFrame()) self.gameObject:SetActive(false) end cs_coroutine.start(wait) end function SkillDisplayCtrl:OnDisable() end function SkillDisplayCtrl:OnDestroy() end function SkillDisplayCtrl:OnRelease() end function SkillDisplayCtrl:ShowSkillTips(nSkillId, nCharId, callback) if self.timer ~= nil then self.timer:Cancel(false) self.timer = nil end local wait = function() coroutine.yield(CS.UnityEngine.WaitForEndOfFrame()) self.animRoot.enabled = true self.animRoot:Play("SubSkillDisplay_skill_1") NovaAPI.SetCanvasGroupAlpha(self.canvasGroup, 1) end self.animRoot.enabled = false NovaAPI.SetCanvasGroupAlpha(self.canvasGroup, 0) cs_coroutine.start(wait) local mapSkillCfgData = ConfigTable.GetData_Skill(nSkillId) if mapSkillCfgData == nil then printError("Skill Data Missing:" .. nSkillId) NovaAPI.SetTMPText(self._mapNode.TMP_SkillName, "") else NovaAPI.SetTMPText(self._mapNode.TMP_SkillName, mapSkillCfgData.Title) end local nSkinId = PlayerData.Char:GetCharSkinId(nCharId) local mapSkin = ConfigTable.GetData_CharacterSkin(nSkinId) self:SetPngSprite(self._mapNode.imgSubSkillIcon, mapSkin.Icon .. AllEnum.CharHeadIconSurfix.XXL) self.ShowEndCallback = callback self.gameObject:SetActive(true) self.timer = self:AddTimer(1, 1.5, "ShowEnd", true, true, true, true) self.bPlaying = true end function SkillDisplayCtrl:ShowEnd() NovaAPI.SetImageSpriteAsset(self._mapNode.imgSubSkillIcon, nil) NovaAPI.SetTMPText(self._mapNode.TMP_SkillName, "") if self.ShowEndCallback ~= nil and type(self.ShowEndCallback) == "function" then self.ShowEndCallback() end self.ShowEndCallback = nil self.gameObject:SetActive(false) self.timer = nil self.bPlaying = false end function SkillDisplayCtrl:InterrputAnim() if self.timer ~= nil then self.timer:Cancel(false) self.timer = nil end NovaAPI.SetImageSpriteAsset(self._mapNode.imgSubSkillIcon, nil) NovaAPI.SetTMPText(self._mapNode.TMP_SkillName, "") self.ShowEndCallback = nil self.gameObject:SetActive(false) self.timer = nil self.bPlaying = false end return SkillDisplayCtrl