74 lines
1.9 KiB
Lua
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; |