2025-01-04 23:00:19 +08:00

98 lines
3.4 KiB
Lua

---@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