rott/kf_sources/XInterface/Classes/Browser_ServerListPageLAN.uc
2026-07-14 20:27:09 +07:00

79 lines
1.8 KiB
Ucode

class Browser_ServerListPageLAN extends Browser_ServerListPageBase;
var LANQueryClient LQC;
function InitComponent(GUIController MyController, GUIComponent MyOwner)
{
Super.Initcomponent(MyController, MyOwner);
GUIButton(GUIPanel(Controls[1]).Controls[6]).bVisible = false;
GUIButton(GUIPanel(Controls[1]).Controls[7]).bVisible = false;
StatusBar.WinWidth=1.0;
if( LQC == None )
{
LQC = PlayerOwner().Level.Spawn( class'LANQueryClient' );
LQC.OnReceivedPingInfo = MyReceivedPingInfo;
LQC.OnPingTimeout = MyServersList.MyPingTimeout;
}
// Change server list spacing a bit (no icons)
MyServersList.InitColumnPerc[0]=0.0;
MyServersList.InitColumnPerc[1]=0.47;
MyServersList.InitColumnPerc[2]=0.25;
MyServersList.InitColumnPerc[3]=0.13;
MyServersList.InitColumnPerc[4]=0.15;
RefreshList();
}
function OnCloseBrowser()
{
if( LQC != None )
{
LQC.Destroy();
LQC = None;
}
}
function MyReceivedPingInfo( int ServerID, ServerQueryClient.EPingCause PingCause, GameInfo.ServerResponseLine s )
{
local int i;
if( ServerID < 0 )
{
for( i=0;i<MyServersList.Servers.Length;i++ )
{
// dupe
if( MyServersList.Servers[i].IP==s.IP && MyServersList.Servers[i].Port==s.Port )
return;
}
MyServersList.MyOnReceivedServer( s );
}
else
{
MyServersList.MyReceivedPingInfo( ServerID, PingCause, s );
}
}
function PingServer( int listid, ServerQueryClient.EPingCause PingCause, GameInfo.ServerResponseLine s )
{
LQC.PingServer( listid, PingCause, s.IP, s.QueryPort, QI_RulesAndPlayers, s );
}
function CancelPings()
{
LQC.CancelPings();
}
function RefreshList()
{
MyServersList.Clear();
CancelPings();
LQC.BroadcastPingRequest();
}
defaultproperties
{
ConnectLAN=True
}