125 lines
4.6 KiB
Lua
Raw Permalink Normal View History

2025-01-04 23:00:19 +08:00
---@class WB_ShowVSPlayerInfo_C:UUserWidget
---@field ShowPK UWidgetAnimation
---@field Common_Avatar_BP_C_Enemy UCommon_Avatar_BP_C
---@field Common_Avatar_BP_C_Self UCommon_Avatar_BP_C
---@field Image_EnemyDan UImage
---@field Image_EnemyHead UImage
---@field Image_SelfDan UImage
---@field Image_SelfHead UImage
---@field TextBlock_EnemyHideScore UTextBlock
---@field TextBlock_EnemyName UTextBlock
---@field TextBlock_EnemyScore UTextBlock
---@field TextBlock_SelfHideScore UTextBlock
---@field TextBlock_SelfName UTextBlock
---@field TextBlock_SelfScore UTextBlock
---@field WidgetSwitcher_0 UWidgetSwitcher
---@field WidgetSwitcher_1 UWidgetSwitcher
--Edit Below--
---@type WB_ShowVSPlayerInfo_C
local WB_ShowVSPlayerInfo = { bInitDoOnce = false }
function WB_ShowVSPlayerInfo:Construct()
self:LuaInit();
end
-- function WB_ShowVSPlayerInfo:Tick(MyGeometry, InDeltaTime)
-- end
-- function WB_ShowVSPlayerInfo:Destruct()
-- end
-- [Editor Generated Lua] function define Begin:
function WB_ShowVSPlayerInfo:LuaInit()
if self.bInitDoOnce then return ; end
self.bInitDoOnce = true;
UGCGameSystem.SetTimer(self, function()
self:InsertPlayerInfo();
end, 10);
end
function WB_ShowVSPlayerInfo:OnShowPanel()
if table.getCount(UE.GetAccountInfo()) > 1 then
self:PlayAnimation(self.ShowPK, 0, 1, EUMGSequencePlayMode.Forward, 1.0);
-- 延迟移除
UGCLogSystem.Log("[WB_ShowVSPlayerInfo:OnShowPanel] ShowPK Time = %s", tostring(self.ShowPK:GetEndTime()));
UGCEventSystem.SetTimer(self, function()
self.Common_Avatar_BP_C_Enemy:SetVisibility(ESlateVisibility.Collapsed);
self.Common_Avatar_BP_C_Self:SetVisibility(ESlateVisibility.Collapsed);
self:SetVisibility(ESlateVisibility.Collapsed);
WidgetManager:ClosePanel(WidgetConfig.EUIType.ShowPK);
end, self.ShowPK:GetEndTime());
else
self.Common_Avatar_BP_C_Enemy:SetVisibility(ESlateVisibility.Collapsed);
self.Common_Avatar_BP_C_Self:SetVisibility(ESlateVisibility.Collapsed);
self:SetVisibility(ESlateVisibility.Collapsed);
WidgetManager:ClosePanel(WidgetConfig.EUIType.ShowPK);
end
end
function WB_ShowVSPlayerInfo:InsertPlayerInfo()
UGCLogSystem.Log("[WB_ShowVSPlayerInfo:InsertPlayerInfo] 执行")
for PlayerKey, Archive in pairs(ArchiveTable) do
self:UpdatePlayerInfo(PlayerKey, {
UID = AccountTable[PlayerKey].UID,
IconURL = AccountTable[PlayerKey].IconURL,
Gender = AccountTable[PlayerKey].Gender,
AvatarBoxId = AccountTable[PlayerKey].AvatarBoxId,
PlayerLevel = AccountTable[PlayerKey].PlayerLevel,
PlayerName = AccountTable[PlayerKey].PlayerName,
Score = Archive.Score,
HideScore = Archive.HideScore,
});
end
end
---@param HeadInfo table {UID:string, IconURL:string, Gender:int, AvatarBoxId:int, PlayerLevel:int, PlayerName:string, Score:uint, HideScore:uint} 其中AvatarBoxId可以从PlayerState中获取
function WB_ShowVSPlayerInfo:UpdatePlayerInfo(PlayerKey, PlayerInfo)
UGCLogSystem.LogTree(string.format("[WB_ShowVSPlayerInfo:UpdatePlayerInfo] PlayerInfo ="), PlayerInfo)
local Dan = 1
for i, v in pairs(RankInformationTable.DanInfo) do
if v.MinScore <= PlayerInfo.Score then Dan = i; end
end
UGCLogSystem.Log("[WB_ShowVSPlayerInfo:UpdatePlayerInfo] PlayerName = %s", PlayerInfo.PlayerName)
local ShowSelf = false;
if LocalIsFriendSpectator or LocalIsGlobalSpectator then
ShowSelf = UE.GetTeamID(PlayerKey) == 1;
else
ShowSelf = PlayerKey == LocalPlayerKey;
end
if ShowSelf then
self.TextBlock_SelfName:SetText(PlayerInfo.PlayerName)
self.TextBlock_SelfScore:SetText(PlayerInfo.Score)
if PlayerInfo.HideScore > 0 then
self.TextBlock_SelfHideScore:SetText('(' .. PlayerInfo.HideScore .. ')')
else
self.TextBlock_SelfHideScore:SetText("")
end
UE.AsyncLoadObject(RankInformationTable.DanInfo[Dan].Icon, function(Tex)
self.Image_SelfDan:SetBrushFromTexture(Tex);
end);
self.Common_Avatar_BP_C_Self:InitView(2, PlayerInfo.UIDString, PlayerInfo.IconURL, PlayerInfo.Gender, PlayerInfo.AvatarBoxId, PlayerInfo.PlayerLevel, false, false)
else
self.TextBlock_EnemyName:SetText(PlayerInfo.PlayerName)
self.TextBlock_EnemyScore:SetText(PlayerInfo.Score)
if PlayerInfo.HideScore > 0 then
self.TextBlock_EnemyHideScore:SetText('(' .. PlayerInfo.HideScore .. ')')
else
self.TextBlock_EnemyHideScore:SetText("")
end
UE.AsyncLoadObject(RankInformationTable.DanInfo[Dan].Icon, function(Tex)
self.Image_EnemyDan:SetBrushFromTexture(Tex);
end);
self.Common_Avatar_BP_C_Enemy:InitView(2, PlayerInfo.UIDString, PlayerInfo.IconURL, PlayerInfo.Gender, PlayerInfo.AvatarBoxId, PlayerInfo.PlayerLevel, false, false)
end
end
-- [Editor Generated Lua] function define End;
return WB_ShowVSPlayerInfo