//==================================================================== // This page shows LAN-based online servers. // // Updated by Ron Prestenback // (c) 2003, Epic Games, Inc. All Rights Reserved // ==================================================================== class UT2K4Browser_ServerListPageLAN extends UT2K4Browser_ServerListPageBase; var() private LANQueryClient LQC; var() string StoredIP, StoredPort; event Opened( GUIComponent Sender ) { Super.Opened(Sender); if ( !bInit && bVisible ) SetTimer(10.0,True); } function ShowPanel(bool bShow) { Super.ShowPanel(bShow); if ( bShow ) { SetTimer(10.0, True); bInit = False; } else KillTimer(); } function Timer() { Super.Timer(); RefreshList(); } function Refresh() { Super.Refresh(); ResetQueryClient(GetClient()); RefreshList(); } function RefreshList() { local string s; CancelPings(); // If we had a server selected, save the ip and port so that we can reselect the server when the query for the server is received s = li_Server.Get(); if ( s == "" || !Divide( s, ":", StoredIP, StoredPort ) ) { StoredIP = ""; StoredPort = ""; } li_Server.Clear(); GetClient().BroadcastPingRequest(); } function ReceivedPingInfo( int ServerID, ServerQueryClient.EPingCause PingCause, GameInfo.ServerResponseLine s ) { local int i; if( ServerID < 0 ) { for( i=0;i= 10 ) { // Unresolvable network error ShowNetworkError(); return None; } } } return LQC; } function OnDestroyPanel(optional bool bCancelled) { Super.OnDestroyPanel(bCancelled); ClearQueryClient(); } function LevelChanged() { Super.LevelChanged(); ClearQueryClient(); } function Free() { Super.Free(); ClearQueryClient(); } protected function ClearQueryClient() { if ( LQC != None ) { log(Name@"Destroying LAN query client '"$LQC$"'"); LQC.CancelPings(); LQC.Destroy(); LQC = None; } } function NetworkErrorClosed( bool bCancelled ) { if ( !bCancelled ) GetClient(); } defaultproperties { PanelCaption="Server Browser : LAN" ConnectLAN=True }