---@class WB_GameEnd_C:UUserWidget ---@field Button_Return UButton ---@field Button_Share UButton ---@field TextBlock_Return UTextBlock ---@field WB_PlayerInfo UWB_PlayerInfo_C ---@field WidgetSwitcher_GameEnd UWidgetSwitcher --Edit Below-- ---@type WB_GameEnd_C local WB_GameEnd = { bInitDoOnce = false; }; function WB_GameEnd:Construct() self:LuaInit(); end function WB_GameEnd:OnShowPanel(InTime) -- 加载即可 self:AutoReturnToLobby(InTime); end WB_GameEnd.ReturnTimer = nil; function WB_GameEnd:AutoReturnToLobby(InTime) if InTime == nil then InTime = MiniGameTimes.GameEnd; end GlobalTickTool:AddInternalCount(self, function(o, dt, ServerTime, t) self.TextBlock_Return:SetText("返回大厅(" .. tostring(t) .. ')'); end, 1, InTime, function(o) o:OnReturnToLobby(); end); end function WB_GameEnd:LuaInit() if self.bInitDoOnce then return ; end self.WB_PlayerInfo:LuaInit(); self.Button_Return.OnClicked:Add(self.OnReturnToLobby, self) UITool.BindButtonToShare(self.Button_Share); UGCEventSystem.AddListener(EventTypes.UpdatePlayerKDAs, self.UpdatePlayerKDAs, self) self.TextBlock_Return:SetText("返回大厅"); self.bInitDoOnce = true; end function WB_GameEnd:OnReturnToLobby() -- 发送关闭协议到服务器 UE.ReturnToLobby(); end -- function WB_GameEnd:Tick(MyGeometry, InDeltaTime) -- end -- function WB_GameEnd:Destruct() -- end function WB_GameEnd:UpdatePlayerKDAs(InKDAs) local KDATable = {}; for PlayerKey, KDA in pairs(InKDAs) do table.insert(KDATable, { Kill = KDA.Kill, Dead = KDA.Dead, Assist = KDA.Assist, KDA = (KDA.Kill + KDA.Assist) / (KDA.Dead == 0 and 1 or KDA.Dead), PlayerKey = PlayerKey, }); end table.sort(KDATable, function(a, b) if a.KDA == b.KDA then if a.Kill == b.Kill then return a.Dead < b.Dead; end return a.Kill > b.Kill; end return a.KDA > b.KDA; end); local No = 1; local Kda, Kill, Dead = 0, 0, 0; local LocalNo = 0; for i = 1, #KDATable do local Item = KDATable[i]; if not (Kda == Item.KDA and Kill == Item.Kill and Dead == Item.Dead) then No = i; end KDATable[i].No = No; if LocalPlayerKey == Item.PlayerKey then LocalNo = No; end Kill = Item.Kill; Kda = Item.KDA; Dead = Item.Dead; end self.WB_PlayerInfo:SetKDAItems(KDATable); UGCLogSystem.LogTree(string.format("[WB_GameEnd:UpdatePlayerKDAs] KDATable End"), KDATable) -- 检查是否是前三名 if LocalNo == 1 then self.WidgetSwitcher_GameEnd:SetActiveWidgetIndex(2); elseif LocalNo <= 3 then self.WidgetSwitcher_GameEnd:SetActiveWidgetIndex(1); else self.WidgetSwitcher_GameEnd:SetActiveWidgetIndex(0); end end return WB_GameEnd;