305 lines
7.9 KiB
Ucode
305 lines
7.9 KiB
Ucode
//====================================================================
|
|
// Base class for all Server Browser tab panels
|
|
//
|
|
// Updated by Ron Prestenback
|
|
// (c) 2003, Epic Games, Inc. All Rights Reserved
|
|
// ====================================================================
|
|
class UT2K4Browser_Page extends UT2K4TabPanel;
|
|
|
|
var() UT2K4ServerBrowser Browser;
|
|
var() UT2K4Browser_Footer t_Footer; // For quick access
|
|
|
|
var() localized string MustUpgradeString;
|
|
var() localized string QueryCompleteString;
|
|
var() localized string StartQueryString;
|
|
var() localized string AuthFailString;
|
|
var() localized string ConnFailString;
|
|
var() localized string ConnTimeoutString;
|
|
var() localized string RetryString;
|
|
var() localized string ReadyString;
|
|
|
|
var() localized string BackCaption;
|
|
var() localized string RefreshCaption;
|
|
var() localized string JoinCaption;
|
|
var() localized string SpectateCaption;
|
|
var() localized string FilterCaption;
|
|
var() localized string UnspecifiedNetworkError;
|
|
var() string CurrentFooterCaption;
|
|
|
|
var() bool bCommonButtonWidth;
|
|
|
|
delegate OnOpenConnection(optional int Count);
|
|
delegate OnCloseConnection(optional int Count);
|
|
|
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
|
{
|
|
if (UT2K4ServerBrowser(MyOwner.MenuOwner) != None)
|
|
{
|
|
Browser = UT2K4ServerBrowser(MyOwner.MenuOwner);
|
|
t_Footer = UT2K4Browser_Footer(Browser.t_Footer);
|
|
}
|
|
Super.InitComponent(MyController, MyOwner);
|
|
CurrentFooterCaption = ReadyString;
|
|
}
|
|
|
|
event Opened(GUIComponent Sender)
|
|
{
|
|
// This should never occur, but is here to catch any weird problems
|
|
if ((Browser == None || t_Footer == None) && UT2K4ServerBrowser(Sender) != None)
|
|
{
|
|
Browser = UT2K4ServerBrowser(Sender);
|
|
t_Footer = UT2K4Browser_Footer(Browser.t_Footer);
|
|
}
|
|
|
|
Super.Opened(Sender);
|
|
}
|
|
|
|
function ShowPanel(bool bShow)
|
|
{
|
|
Super.ShowPanel(bShow);
|
|
|
|
if (bShow)
|
|
{
|
|
Browser.t_Header.SetCaption(PanelCaption);
|
|
RefreshFooter(Self,string(!bCommonButtonWidth));
|
|
SetFooterCaption(CurrentFooterCaption);
|
|
}
|
|
}
|
|
|
|
function bool InternalOnRightClick(GUIComponent Sender)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
function bool ShouldDisplayGameType()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// Should be subclassed
|
|
function QueryComplete( MasterServerClient.EResponseInfo ResponseInfo, int Info );
|
|
function ReceivedPingInfo( int ServerID, ServerQueryClient.EPingCause PingCause, GameInfo.ServerResponseLine s );
|
|
function ReceivedPingTimeout( int listid, ServerQueryClient.EPingCause PingCause );
|
|
|
|
// Master Server Methods
|
|
function AddQueryTerm(coerce string Key, coerce string Value, MasterServerClient.EQueryType QueryType)
|
|
{
|
|
local MasterServerClient.QueryData QD;
|
|
local int i;
|
|
|
|
// log("AddQueryTerm Key:"$Key@"Value:"$Value@"QueryType:"$GetEnum(enum'EQueryType',QueryType));
|
|
for ( i = 0; i < Browser.Uplink().Query.Length; i++ )
|
|
{
|
|
QD = Browser.Uplink().Query[i];
|
|
if ( QD.Key ~= Key && QD.Value ~= Value && QD.QueryType == QueryType )
|
|
return;
|
|
}
|
|
|
|
QD.Key = Key;
|
|
QD.Value = Value;
|
|
QD.QueryType = QueryType;
|
|
|
|
Browser.Uplink().Query[i] = QD;
|
|
}
|
|
|
|
function ResetQueryClient( ServerQueryClient Client )
|
|
{
|
|
if ( Client == None )
|
|
return;
|
|
|
|
Client.CancelPings();
|
|
|
|
BindQueryClient(Client);
|
|
|
|
SetFooterCaption(ReadyString);
|
|
}
|
|
|
|
function BindQueryClient( ServerQueryClient Client )
|
|
{
|
|
if ( Client == None )
|
|
return;
|
|
|
|
Client.OnReceivedPingInfo = ReceivedPingInfo;
|
|
Client.OnPingTimeout = ReceivedPingTimeout;
|
|
}
|
|
|
|
function CloseMSConnection()
|
|
{
|
|
if ( Browser != None )
|
|
{
|
|
Browser.Uplink().CancelPings();
|
|
Browser.Uplink().Stop();
|
|
}
|
|
}
|
|
|
|
// this is called after panels change button captions - it forces the footer to re-initialize its button widths
|
|
delegate RefreshFooter( optional UT2K4Browser_Page Page, optional string bPerButtonSizes );
|
|
|
|
function SetFooterCaption(string NewCaption, optional bool bAppend)
|
|
{
|
|
local GUITabControl TC;
|
|
|
|
// Don't allow a non-active panel to update the footer caption
|
|
TC = GUITabControl(MenuOwner);
|
|
if ( TC.PendingTab != None )
|
|
{
|
|
if ( TC.PendingTab != MyButton )
|
|
return;
|
|
}
|
|
else if ( TC.ActiveTab != MyButton )
|
|
return;
|
|
|
|
if ( t_Footer == None )
|
|
t_Footer = UT2K4Browser_Footer(Browser.t_Footer);
|
|
|
|
if ( bAppend )
|
|
NewCaption = t_Footer.t_StatusBar.GetCaption() $ NewCaption;
|
|
|
|
t_Footer.t_StatusBar.SetCaption(NewCaption);
|
|
CurrentFooterCaption = t_Footer.t_StatusBar.Caption;
|
|
}
|
|
|
|
function SetJoinCaption(string NewCaption, optional bool bAppend)
|
|
{
|
|
if ( t_Footer == None || t_Footer.b_Join == None )
|
|
return;
|
|
|
|
if ( bAppend )
|
|
NewCaption = t_Footer.b_Join.Caption $ NewCaption;
|
|
|
|
t_Footer.b_Join.Caption = NewCaption;
|
|
}
|
|
|
|
function SetSpectateCaption(string NewCaption, optional bool bAppend)
|
|
{
|
|
if ( t_Footer == None || t_Footer.b_Spectate == None )
|
|
return;
|
|
|
|
if ( bAppend )
|
|
NewCaption = t_Footer.b_Spectate.Caption $ NewCaption;
|
|
|
|
t_Footer.b_Spectate.Caption = NewCaption;
|
|
}
|
|
|
|
function SetRefreshCaption(string NewCaption, optional bool bAppend)
|
|
{
|
|
if ( t_Footer == None || t_Footer.b_Refresh == None )
|
|
return;
|
|
|
|
if ( bAppend )
|
|
NewCaption = t_Footer.b_Refresh.Caption $ NewCaption;
|
|
|
|
t_Footer.b_Refresh.Caption = NewCaption;
|
|
}
|
|
|
|
|
|
function CheckJoinButton(bool Available)
|
|
{
|
|
if ( t_Footer == None || t_Footer.b_Join == None )
|
|
return;
|
|
|
|
if ( Available )
|
|
EnableComponent(t_Footer.b_Join);
|
|
else DisableComponent(t_Footer.b_Join);
|
|
}
|
|
|
|
function CheckSpectateButton(bool Available)
|
|
{
|
|
if ( t_Footer == None || t_Footer.b_Spectate == None )
|
|
return;
|
|
|
|
if ( Available )
|
|
EnableComponent(t_Footer.b_Spectate);
|
|
else DisableComponent(t_Footer.b_Spectate);
|
|
}
|
|
|
|
function CheckRefreshButton(bool Available)
|
|
{
|
|
if ( t_Footer == None || t_Footer.b_Refresh == None )
|
|
return;
|
|
|
|
if ( Available )
|
|
EnableComponent(t_Footer.b_Refresh);
|
|
else DisableComponent(t_Footer.b_Refresh);
|
|
}
|
|
|
|
function JoinClicked();
|
|
function SpectateClicked();
|
|
function FilterClicked();
|
|
function RefreshClicked()
|
|
{
|
|
Refresh();
|
|
}
|
|
|
|
// Returns whether the refresh button should be available for this panel - also gives chance to modify caption, if necessary
|
|
function bool IsRefreshAvailable( out string ButtonCaption )
|
|
{
|
|
ButtonCaption = RefreshCaption;
|
|
return true;
|
|
}
|
|
|
|
// Returns whether the spectate button should be available for this panel - also gives chance to modify caption, if necessary
|
|
function bool IsSpectateAvailable( out string ButtonCaption )
|
|
{
|
|
ButtonCaption = SpectateCaption;
|
|
return true;
|
|
}
|
|
|
|
// Returns whether the join button should be available for this panel - also gives chance to modify caption, if necessary
|
|
function bool IsJoinAvailable( out string ButtonCaption )
|
|
{
|
|
ButtonCaption = JoinCaption;
|
|
return true;
|
|
}
|
|
|
|
// Returns whether the filter button should be available for this panel - also gives chance to modify caption, if necessary
|
|
function bool IsFilterAvailable( out string ButtonCaption )
|
|
{
|
|
ButtonCaption = FilterCaption;
|
|
return false;
|
|
}
|
|
|
|
function ShowNetworkError( optional string ErrorMsg )
|
|
{
|
|
local GUIPage Page;
|
|
|
|
if ( ErrorMsg == "" )
|
|
ErrorMsg = UnspecifiedNetworkError;
|
|
|
|
Page = Controller.ShowQuestionDialog( ErrorMsg, QBTN_AbortRetry, QBTN_Abort );
|
|
if ( Page != None )
|
|
Page.OnClose = NetworkErrorClosed;
|
|
}
|
|
|
|
function NetworkErrorClosed( bool bCancelled )
|
|
{
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
MustUpgradeString="Upgrade available. Please refresh the News page."
|
|
UnspecifiedNetworkError="There was an unknown error while attempting to connect to the network."
|
|
|
|
StartQueryString="Querying Master Server"
|
|
AuthFailString="Authentication Failed"
|
|
ConnFailString="Connection Failed"
|
|
ConnTimeoutString="Connection Timed Out"
|
|
QueryCompleteString="Query Complete!"
|
|
RetryString=" - Retrying"
|
|
ReadyString="Ready"
|
|
|
|
BackCaption="BACK"
|
|
JoinCaption="JOIN"
|
|
SpectateCaption="SPECTATE"
|
|
RefreshCaption="REFRESH"
|
|
FilterCaption="FILTERS"
|
|
|
|
bFillHeight=True
|
|
WinWidth=1.0
|
|
WinHeight=1.0
|
|
WinTop=0.0
|
|
WinLeft=0.0
|
|
FadeInTime=0.25
|
|
bCommonButtonWidth=true
|
|
}
|