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

74 lines
1.9 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; };
function WB_SoldierInfo_Item:Construct()
self.ProgressBar_Main:SetPercent(0.);
UGCEventSystem.SetTimerLoop(self, function()
self:OnUpdate();
end, 1 / 90.)
end
--- 更新兵种
WB_SoldierInfo_Item.DefaultNum = 0.5;
-- 每次移动的距离(标量)
WB_SoldierInfo_Item.DeltaNum = {
BiaoLiang = 0.015;
ShiLiang = 0;
};
WB_SoldierInfo_Item.EnableChange = false;
WB_SoldierInfo_Item.TargetNum = 0;
--- 每次都走固定的距离直到到达位置
function WB_SoldierInfo_Item:UpdateSoldierDiff1(Num)
self.TargetNum = Num;
if self.ProgressBar_Main.Percent < Num then
self.DeltaNum.ShiLiang = self.DeltaNum.BiaoLiang;
else
self.DeltaNum.ShiLiang = self.DeltaNum.BiaoLiang * -1;
end
self.EnableChange = true;
end
function WB_SoldierInfo_Item:OnUpdate()
if self.EnableChange then
-- 获取当前
if math.abs(self.ProgressBar_Main.Percent - self.TargetNum) <= self.DeltaNum.BiaoLiang then
self.EnableChange = false;
self.ProgressBar_Main:SetPercent(self.TargetNum);
return;
end
local Num = self.ProgressBar_Main.Percent + self.DeltaNum.ShiLiang
self.ProgressBar_Main:SetPercent(Num);
end
end
---@param InType ESoldierType
---@param InIndex ESpecialType
function WB_SoldierInfo_Item:SetSoldierType(InType, InIndex)
local Num = SoldierConfig.Features[InType][InIndex];
if Num == nil then
Num = self.DefaultNum;
else
if InIndex == SoldierConfig.ESpecialType.Poison then
Num = self.DefaultNum * (1 / Num);
else
Num = self.DefaultNum * Num;
end
end
self:SetInfoName(InIndex);
self:UpdateSoldierDiff1(Num);
end
---@param InIndex ESpecialType
function WB_SoldierInfo_Item:SetInfoName(InIndex)
self.TextBlock_Name:SetText(SoldierConfig.ESpecialTypeName[InIndex]);
end
return WB_SoldierInfo_Item;