97 lines
3.7 KiB
Lua
Raw Permalink Normal View History

2025-01-04 23:00:19 +08:00
---@class WB_Settlement_C:UUserWidget
---@field ShowAnim UWidgetAnimation
---@field Button_AutoReturnToLobby UButton
---@field Button_share UButton
---@field Image_Left UImage
---@field Image_Right UImage
---@field TextBlock_AttackMVPName UTextBlock
---@field TextBlock_AutoReturnToLobby UTextBlock
---@field TextBlock_DefendMVPName UTextBlock
---@field VerticalBox_Left UVerticalBox
--Edit Below--
---@type WB_TeamSettlement_C
local WB_Settlement = {
bInitDoOnce = false;
LeftTeamType = 1;
RightTeamType = 2;
};
function WB_Settlement:Construct()
--UGCEventSystem.AddListener(EventEnum.UpdatePlayerScoreData, self.UpdateRank, self);
--UGCEventSystem.AddListener(EventEnum.UpdatePlayerRank, self.UpdateRank, self);
WidgetLibrary.BindButtonClicked(self.Button_AutoReturnToLobby, self.Button_AutoReturnToLobby_OnClicked, self)
WidgetLibrary.BindButtonClicked(self.Button_share, self.ShareSettlement, self)
end
function WB_Settlement:OnShowPanel()
self:AutoReturnToLobby()
self:UpdateRank()
UGCEventSystem.AddListener(EventEnum.UpdatePlayerScoreData, self.UpdateRank, self)
end
function WB_Settlement:UpdateRank()
UGCLogSystem.LogTree("[WB_TeamSettlement_UpdateRank] PlayerScoreDatas", PlayerScoreSystem.GetPlayerScoreDatas())
local RankData = PlayerScoreSystem.GetRank()
UGCLogSystem.LogTree("[WB_TeamSettlement_UpdateRank]", RankData)
for i = 0, self.VerticalBox_Left:GetChildrenCount() - 1 do
local ItemLeftInst = self.VerticalBox_Left:GetChildAt(i)
local PlayerKeyLeft = RankData[i + 1]
if PlayerKeyLeft then
ItemLeftInst:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
ItemLeftInst:InitRankInfo(PlayerKeyLeft, i + 1)
else
ItemLeftInst:SetVisibility(ESlateVisibility.Collapsed)
end
end
local AttackMVPPlayerKey = UGCGameSystem.GameState:GetAttackMVP()
local DefendMVPPlayerKey = UGCGameSystem.GameState:GetDefendMVP()
self.TextBlock_AttackMVPName:SetText(UGCGameSystem.GameState:GetPlayerNameByPlayerKey(AttackMVPPlayerKey))
self.TextBlock_DefendMVPName:SetText(UGCGameSystem.GameState:GetPlayerNameByPlayerKey(DefendMVPPlayerKey))
self:PlayAnimation(self.ShowAnim, 0, 1, EUMGSequencePlayMode.Forward, 1.0)
end
function WB_Settlement:AutoReturnToLobby()
self.DelayReturnToLobbyTime = GlobalConfigs.GameSetting.DelayReturnToLobbyTime
self.SettlementTime = KismetSystemLibrary.GetGameTimeInSeconds(self)
self.DelayReturnToLobbyTimerHandle = UGCEventSystem.SetTimerLoop(
self,
function ()
local NowTime = KismetSystemLibrary.GetGameTimeInSeconds(self)
local ShowTime = math.floor(self.DelayReturnToLobbyTime - (NowTime - self.SettlementTime))
ShowTime = ShowTime >= 0 and ShowTime or 0
self.TextBlock_AutoReturnToLobby:SetText(string.format("返回大厅(%ds)", ShowTime))
if ShowTime <= 0 then self:Button_AutoReturnToLobby_OnClicked() end
end,
0.5
)
end
function WB_Settlement:Button_AutoReturnToLobby_OnClicked()
if UGCGameSystem.GameState.GameStateType ~= CustomEnum.EGameState.End then return end
if self == nil or self.DoOnceReturnToLobby then return end
if self.DelayReturnToLobbyTimerHandle then
UGCEventSystem.StopTimer(self.DelayReturnToLobbyTimerHandle)
self.DelayReturnToLobbyTimerHandle = nil
end
self.DoOnceReturnToLobby = true
UGCGameSystem.ReturnToLobby()
--UGCMultiMode.ReqesetMatch(PlacementModeConfig.PlaceModeID)
UGCLogSystem.Log("[WB_TeamSettlement_Button_AutoReturnToLobby_OnClicked]")
end
--- 分享战绩
function WB_Settlement:ShareSettlement()
UGCWidgetManagerSystem.Share();
end
return WB_Settlement;