UGCProjects/SoldierWar/Script/UI/SelectSoldier/WB_SoldierInfo_Item.lua
2025-01-04 23:00:19 +08:00

59 lines
1.7 KiB
Lua

---@class WB_SoldierInfo_Item_C:UUserWidget
---@field ProgressBar_Main UProgressBar
---@field TextBlock_Name UTextBlock
--Edit Below--
---@type WB_SoldierInfo_Item_C
local WB_SoldierInfo_Item = { bInitDoOnce = false; };
WB_SoldierInfo_Item.TargetVal = 0;
WB_SoldierInfo_Item.ChangeVal = 0.015;
WB_SoldierInfo_Item.EnableChange = false;
function WB_SoldierInfo_Item:Construct()
self:LuaInit();
end
function WB_SoldierInfo_Item:LuaInit()
if self.bInitDoOnce then return ; end
self.bInitDoOnce = true;
self.ProgressBar_Main:SetPercent(0);
GlobalTickTool:AddTick(self, self.OnUpdate);
end
function WB_SoldierInfo_Item:Init(InType)
self.Type = InType;
self.TextBlock_Name:SetText(ESoldierAddName[InType][1]);
end
function WB_SoldierInfo_Item:GetType() return self.Type; end
function WB_SoldierInfo_Item:Destruct()
if self.UpdateTimer ~= nil then
UGCEventSystem.StopTimer(self.UpdateTimer);
self.UpdateTimer = nil;
end
end
function WB_SoldierInfo_Item:OnUpdate(st, InDeltaTime)
if not self.EnableChange then return ; end
if math.abs(self.ProgressBar_Main.Percent - self.TargetVal) < math.abs(self.ChangeVal) then
self.ProgressBar_Main:SetPercent(self.TargetVal);
self.EnableChange = false;
return ;
end
self.ProgressBar_Main:SetPercent(self.ProgressBar_Main.Percent + self.ChangeVal);
end
function WB_SoldierInfo_Item:SetTarget(InTarget)
if InTarget == nil then InTarget = 1; end
local CurrPercent = self.ProgressBar_Main.Percent;
local TargetPercent = InTarget / 2
self.TargetVal = TargetPercent;
if CurrPercent == TargetPercent then return ; end
self.ChangeVal = math.abs(self.ChangeVal);
if CurrPercent > TargetPercent then self.ChangeVal = -self.ChangeVal; end
self.EnableChange = true;
end
return WB_SoldierInfo_Item;