---@class WB_UseSkill_C:UAEUserWidget ---@field DX_UpgradeSkills UWidgetAnimation ---@field DX_UpgradeSkills_old UWidgetAnimation ---@field DX_RefreshSkill UWidgetAnimation ---@field Border_Cancel UBorder ---@field Border_SkillSlot UBorder ---@field Button_UseSkill UButton ---@field CanvasPanel_tips UCanvasPanel ---@field CustomizeCanvasPanel_BP_C_1 UCustomizeCanvasPanel_BP_C ---@field CustomizeCanvasPanel_Cancel UCustomizeCanvasPanel_BP_C ---@field Image_BG UImage ---@field Image_CDTime UImage ---@field Image_Icon UImage ---@field Image_Select UImage ---@field NewButton_Cancel UNewButton ---@field Text_Time UTextBlock --Edit Below-- local WB_UseSkill = { bInitDoOnce = false; SkillType = nil; bCanUseSkill = false; bIsShowing = true; } function WB_UseSkill:Construct() -- Test self.SkillType = SkillConfig.ESkillType.PlaceNirvana -- TestFinish self.Text_Time:SetText("") WidgetLibrary.BindButtonPressed(self.Button_UseSkill, self.PressedSkill, self) WidgetLibrary.BindButtonReleased(self.Button_UseSkill, self.ReleasedSkill, self) WidgetLibrary.BindButtonClicked(self.NewButton_Cancel, self.CancelSkill, self) UGCEventSystem.SetTimerLoop(self, self.UpdateCoolingTime, 0.2) end function WB_UseSkill:PressedSkill() if SkillConfig.ExeSkill(UGCSystemLibrary.GetLocalPlayerKey(), self.SkillType, UTSkillEventType.SET_KEY_DOWN) then self.NewButton_Cancel:SetVisibility(ESlateVisibility.Visible) end end function WB_UseSkill:ReleasedSkill() SkillConfig.ExeSkill(UGCSystemLibrary.GetLocalPlayerKey(), self.SkillType, UTSkillEventType.SET_KEY_UP) self.NewButton_Cancel:SetVisibility(ESlateVisibility.Collapsed) end function WB_UseSkill:CancelSkill() SkillConfig.ExeSkill(UGCSystemLibrary.GetLocalPlayerKey(), self.SkillType, UTSkillEventType.SET_SKILL_CANCEL) end function WB_UseSkill:UpdateCoolingTime() local CD = SkillConfig.GetSkillCD(self.SkillType) local RestCoolDownTime = SkillConfig.GetSkillRestCoolDownTime(UGCSystemLibrary.GetLocalPlayerKey(), self.SkillType) if RestCoolDownTime then if self.bIsShowing == false then self:SetVisibility(ESlateVisibility.SelfHitTestInvisible) end UGCLogSystem.Log("[WB_UseSkill_UpdateCoolingTime] RestCoolDownTime:%s", tostring(RestCoolDownTime)) if RestCoolDownTime > 0 then self.Text_Time:SetText(string.format("%.1f", RestCoolDownTime)) self.bCanUseSkill = false local Material = self.Image_CDTime:GetDynamicMaterial(); if Material then Material:SetScalarParameterValue("Mask_Percent", math.clamp(1 - RestCoolDownTime / CD, 0, 1)); end else if self.bCanUseSkill == false then self.Text_Time:SetText("") local Material = self.Image_CDTime:GetDynamicMaterial(); if Material then Material:SetScalarParameterValue("Mask_Percent", 1); end self:PlayAnimation(self.DX_UpgradeSkills, 0, 1, EUMGSequencePlayMode.Forward, 1.0) end self.bCanUseSkill = true end self.bIsShowing = true else if self.bIsShowing == true then self:SetVisibility(ESlateVisibility.Collapsed) end self.bIsShowing = false end end -- function WB_UseSkill:Tick(MyGeometry, InDeltaTime) -- end -- function WB_UseSkill:Destruct() -- end return WB_UseSkill