---@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); 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;