75 lines
2.2 KiB
Lua
75 lines
2.2 KiB
Lua
---@class WB_ReselectWeaponBtn_C:UUserWidget
|
|
---@field Button_ReselectWeapon UButton
|
|
---@field Image_CD UImage
|
|
--Edit Below--
|
|
local WB_ReselectWeaponBtn = {
|
|
bInitDoOnce = false;
|
|
StartShowTime = -10;
|
|
ShowTime = 10;
|
|
bIsShowing = false;
|
|
};
|
|
|
|
|
|
function WB_ReselectWeaponBtn:Construct()
|
|
WidgetLibrary.BindButtonClicked(self.Button_ReselectWeapon, self.ClickBtn, self)
|
|
self.LoopCheckDeadShowBtnHandle = UGCEventSystem.SetTimerLoop(self, self.CheckDeadShowBtn, 1)
|
|
end
|
|
|
|
|
|
function WB_ReselectWeaponBtn:Tick(MyGeometry, InDeltaTime)
|
|
if self.bIsShowing then
|
|
self:UpdateCooling()
|
|
end
|
|
end
|
|
|
|
function WB_ReselectWeaponBtn:Destruct()
|
|
if self.LoopCheckDeadShowBtnHandle then
|
|
UGCEventSystem.StopTimer(self.LoopCheckDeadShowBtnHandle)
|
|
end
|
|
end
|
|
|
|
function WB_ReselectWeaponBtn:OnShowPanel()
|
|
UGCLogSystem.Log("[WB_ReselectWeaponBtn_OnShowPanel]")
|
|
self:ShowBtn()
|
|
end
|
|
|
|
function WB_ReselectWeaponBtn:ShowBtn()
|
|
self.StartShowTime = UGCSystemLibrary.GetGameTime()
|
|
self.bIsShowing = true
|
|
end
|
|
|
|
function WB_ReselectWeaponBtn:CloseBtn()
|
|
self.bIsShowing = false
|
|
WidgetManager:ClosePanel(WidgetConfig.EUIType.ReselectWeaponBtn)
|
|
end
|
|
|
|
function WB_ReselectWeaponBtn:UpdateCooling()
|
|
local NowTime = UGCSystemLibrary.GetGameTime()
|
|
if NowTime - self.StartShowTime > self.ShowTime then
|
|
self:CloseBtn()
|
|
end
|
|
|
|
local Material = self.Image_CD:GetDynamicMaterial();
|
|
local Percent = 1 - (NowTime - self.StartShowTime) / self.ShowTime
|
|
Material:SetScalarParameterValue("Mask_Percent", Percent);
|
|
-- UGCLogSystem.Log("[WB_ReselectWeaponBtn_UpdateCooling] " 1 - (NowTime - self.StartShowTime) / self.ShowTime)
|
|
end
|
|
|
|
function WB_ReselectWeaponBtn:ClickBtn()
|
|
self:CloseBtn()
|
|
WidgetManager:ShowPanel(WidgetConfig.EUIType.WeaponSelect)
|
|
end
|
|
|
|
function WB_ReselectWeaponBtn:CheckDeadShowBtn()
|
|
local LocalPawn = UGCSystemLibrary.GetLocalPlayerPawn()
|
|
if not UE.IsValid(LocalPawn) or UGCPawnSystem.HasPawnState(LocalPawn, EPawnState.Dead) then
|
|
self:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
|
else
|
|
local NowTime = UGCSystemLibrary.GetGameTime()
|
|
if NowTime - self.StartShowTime > self.ShowTime then
|
|
self:CloseBtn()
|
|
end
|
|
end
|
|
end
|
|
|
|
return WB_ReselectWeaponBtn; |