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

108 lines
3.0 KiB
Lua

---@class WB_RankListItem_C:UUserWidget
---@field Image_3 UImage
---@field Image_BG UImage
---@field Image_Icon UImage
---@field Image_SelfFrame UImage
---@field ProgressBar_Rank UProgressBar
---@field TextBlock_kda UTextBlock
---@field TextBlock_PlayerName UTextBlock
---@field TextBlock_RankNum UTextBlock
---@field TextBlock_RankPercent UTextBlock
---@field WidgetSwitcher_1 UWidgetSwitcher
--Edit Below--
---@type WB_RankListItem_C
local WB_RankListItem = {
bInitDoOnce = false;
OwnerPlayerKey = 0;
PlayerTeam = 1;
DefaultColor = {R =0.955974, G=0.246201, B=0.082283, A=1.};
UpdateColorSucceed = false;
AzureColor = { R = 0.06, G = 0.5, B = 1., A = 1 };
OrangeColor = {R =0.955974, G=0.246201, B=0.082283, A=1.};
};
function WB_RankListItem:Construct()
self:LuaInit()
end
function WB_RankListItem:LuaInit()
if self.bInitDoOnce then
return ;
end
self.bInitDoOnce = true;
self:UpdateColor()
end
function WB_RankListItem:UpdateColor()
-- body
if self.UpdateColorSucceed == true then
return
end
self.PlayerTeam = UGCGameSystem.GameState:GetPlayerTeamId(WidgetManager.OwnerController.PlayerKey)
if self.PlayerTeam == 1 then
self.DefaultColor = self.OrangeColor
elseif self.PlayerTeam == 2 then
self.DefaultColor = self.AzureColor
else
return
end
-- self.DefaultColor = DefaultSettings.FloorMaterials[DefaultSettings.TeamColors[self.PlayerTeam]]
UGCLogSystem.LogTree("[WB_RankListItem:UpdateColor] self.DefaultColor = ", self.DefaultColor);
self.ProgressBar_Rank:SetFillColorAndOpacity(self.DefaultColor)
self.UpdateColorSucceed = true
end
-- function WB_RankListItem:Tick(MyGeometry, InDeltaTime)
-- end
-- function WB_RankListItem:Destruct()
-- end
-- 相当于初始化
function WB_RankListItem:UpdateRankInfo(RankNum, InPlayerKey, PlayerDamage, InTotal, KDA)
self:UpdateColor()
self.OwnerPlayerKey = InPlayerKey;
self.TextBlock_PlayerName:SetText(UGCGameSystem.GameState.PlayerInfos[InPlayerKey].PlayerName)
self:SetDamage(PlayerDamage, InTotal)
self:UpdateItemPlayerKDA(KDA)
self.TextBlock_RankNum:SetText(tostring(RankNum))
if WidgetManager.OwnerController.PlayerKey == InPlayerKey then
self.Image_SelfFrame:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
else
self.Image_SelfFrame:SetVisibility(ESlateVisibility.Collapsed)
end
--if not UE_BUILD_TEST then
-- local IconURL = UGCGameSystem.GameState.PlayerInfos[InPlayerKey].AccountInfo.IconURL
-- WidgetManager:GetPlayerHeadSculpture(self.Image_Icon, IconURL)
--end
end
-- 玩家 KDA
-- {
-- KillCount = 0, -- 击杀数
-- DeadCount = 0; -- 死亡数
-- AssistCount = 0; -- 助攻数 }
-- }
function WB_RankListItem:UpdateItemPlayerKDA(InList)
self.TextBlock_kda:SetText(string.format("%d", InList.KillCount))
end
function WB_RankListItem:SetDamage(InData, InTotal)
if InData == nil then
InData = 0.
end
if InTotal == nil then
InTotal = 1.
end
self.ProgressBar_Rank:SetPercent(InData / InTotal);
self.TextBlock_RankPercent:SetText(string.format("%0.1f%%", InData / InTotal * 100.))
end
return WB_RankListItem;