UBrowser
Class UBrowserMainClientWindow

source: c:\runehov\UBrowser\Classes\UBrowserMainClientWindow.uc
Core.Object
   |
   +--UWindow.UWindowBase
      |
      +--UWindow.UWindowWindow
         |
         +--UWindow.UWindowClientWindow
            |
            +--UBrowser.UBrowserMainClientWindow
Direct Known Subclasses:RBrowserMainClientWindow

class UBrowserMainClientWindow
extends UWindow.UWindowClientWindow

//============================================================================= // UBrowserMainClientWindow - The main client area //=============================================================================
Variables
 UBrowserServerListWindow FactoryWindows[20]
 string FavoriteServersClass
 UBrowserInfoWindow InfoWindow
 UWindowPageControlPage LANPage
 string LANTabName
 IRC, MOTD
 IRCName, MOTDName
 UWindowTabControlItem PageBeforeLAN
 UWindowPageControl PageControl
 name ServerListNames[20]
 string ServerListWindowClass
 string UpdateServerClass
 bool bKeepMasterServer


Function Summary
 void Created()
 void NewIRCServer(string S)
 void NewMasterServer(string M)
 void Paint(Canvas C, float X, float Y)
 void Resized()
 void SaveConfigs()
 void SelectInternet()
 void SelectLAN()



Source Code


00001	//=============================================================================
00002	// UBrowserMainClientWindow - The main client area
00003	//=============================================================================
00004	class UBrowserMainClientWindow extends UWindowClientWindow;
00005	
00006	var globalconfig string		LANTabName;
00007	var globalconfig name ServerListNames[20];
00008	var globalconfig bool bKeepMasterServer;
00009	
00010	var UWindowPageControl		PageControl;
00011	var UWindowPageControlPage	Favorites, IRC, MOTD;
00012	var localized string		FavoritesName, IRCName, MOTDName;
00013	var string					ServerListWindowClass;
00014	var string					FavoriteServersClass;
00015	var string					UpdateServerClass;
00016	var UWindowPageControlPage	LANPage;
00017	var UWindowTabControlItem	PageBeforeLAN;
00018	var UBrowserServerListWindow FactoryWindows[20];
00019	var UBrowserInfoWindow		InfoWindow;
00020	
00021	function Created() 
00022	{
00023		local int i, f;
00024		local UWindowPageControlPage P;
00025		local UBrowserServerListWindow W;
00026		local class<UBrowserServerListWindow> C;
00027		local class<UBrowserFavoriteServers> FC;
00028		local class<UBrowserUpdateServerWindow> MC;
00029	
00030		Super.Created();
00031	
00032		InfoWindow = UBrowserInfoWindow(Root.CreateWindow(class'UBrowserInfoWindow', 10, 40, 310, 170));
00033		InfoWindow.HideWindow();
00034	
00035		PageControl = UWindowPageControl(CreateWindow(class'UWindowPageControl', 0, 0, WinWidth, WinHeight));
00036		PageControl.SetMultiLine(True);
00037	
00038		// Add MOTD
00039		MC = class<UBrowserUpdateServerWindow>(DynamicLoadObject(UpdateServerClass, class'Class'));
00040		MOTD = PageControl.AddPage(MOTDName, MC);
00041	
00042		IRC = PageControl.AddPage(IRCName, class'UBrowserIRCWindow');
00043	
00044		// Add favorites
00045		FC = class<UBrowserFavoriteServers>(DynamicLoadObject(FavoriteServersClass, class'Class'));
00046		Favorites = PageControl.AddPage(FavoritesName, FC);
00047	
00048		C = class<UBrowserServerListWindow>(DynamicLoadObject(ServerListWindowClass, class'Class'));
00049	
00050		for(i=0; i<20; i++)
00051		{
00052			if(ServerListNames[i] == '')
00053				break;
00054	
00055			P = PageControl.AddPage("", C, ServerListNames[i]);
00056			if(string(ServerListNames[i]) ~= LANTabName)
00057				LANPage = P;
00058	
00059			W = UBrowserServerListWindow(P.Page);
00060			if(W.bHidden)
00061				PageControl.DeletePage(P);
00062	
00063			if(W.ServerListTitle != "")
00064				P.SetCaption(W.ServerListTitle);
00065			else
00066				P.SetCaption(Localize("ServerListTitles", string(ServerListNames[i]), "UBrowser"));
00067	
00068			FactoryWindows[i] = W;
00069		}
00070	}
00071	
00072	function SelectLAN()
00073	{
00074		if(LANPage != None)
00075		{
00076			PageBeforeLAN = PageControl.SelectedTab;
00077			PageControl.GotoTab(LANPage, True);
00078		}
00079	}
00080	
00081	function SelectInternet()
00082	{
00083		if(PageBeforeLAN != None && PageControl.SelectedTab == LANPage)
00084			PageControl.GotoTab(PageBeforeLAN, True);
00085		PageBeforeLAN = None;
00086	}
00087	
00088	function NewMasterServer(string M)
00089	{
00090		local int i, j;
00091		local string NewServers[10];
00092		local string T;
00093		local bool bHadNewServer;
00094	
00095		i = 0;
00096		while(M != "")
00097		{
00098			j = InStr(M, Chr(13));
00099			if(j != -1)
00100			{
00101				T = Left(M, j);
00102				M = Mid(M, j+1);
00103			}
00104			else
00105			{
00106				T = M;
00107				M = "";
00108			}
00109			if(T != "")
00110				NewServers[i++] = T;
00111		}	
00112	
00113		if(!bKeepMasterServer)
00114		{
00115			for(i=0; i<20; i++)
00116			{
00117				if(ServerListNames[i] == 'UBrowserAll')
00118				{
00119					bHadNewServer = False;
00120					for(j=0; j<9; j++)
00121					{
00122						if(FactoryWindows[i].ListFactories[j] != NewServers[j])
00123						{
00124							Log("Received new master server ["$j$"] from UpdateServer: "$NewServers[j]);
00125							FactoryWindows[i].ListFactories[j] = NewServers[j];
00126							FactoryWindows[i].ListFactories[j+1] = "";
00127							bHadNewServer = True;
00128						}
00129					}
00130					if(bHadNewServer)
00131					{
00132						if(FactoryWindows[i].bHadInitialRefresh)
00133							FactoryWindows[i].Refresh(False, True);
00134						FactoryWindows[i].SaveConfig();
00135					}
00136				}
00137			}
00138		}
00139	}
00140	
00141	function NewIRCServer(string S)
00142	{
00143		UBrowserIRCWindow(IRC.Page).SystemPage.SetupClient.NewIRCServer(S);
00144	}
00145	
00146	function Paint(Canvas C, float X, float Y)
00147	{
00148		DrawStretchedTexture(C, 0, 0, WinWidth, WinHeight, Texture'BlackTexture');
00149	}
00150	
00151	function Resized()
00152	{
00153		Super.Resized();
00154		PageControl.SetSize(WinWidth, WinHeight);
00155	}
00156	
00157	function SaveConfigs()
00158	{
00159		SaveConfig();
00160	}
00161	
00162	defaultproperties
00163	{
00164	     LANTabName="UBrowserLAN"
00165	     ServerListNames(0)=UBrowserLAN
00166	     ServerListNames(1)=UBrowserPopulated
00167	     ServerListNames(2)=UBrowserDeathmatch
00168	     ServerListNames(3)=UBrowserTeamGames
00169	     ServerListNames(4)=UBrowserHeadball
00170	     ServerListNames(5)=UBrowserArena
00171	     ServerListNames(6)=UBrowserAll
00172	     bKeepMasterServer=True
00173	     FavoritesName="Favorites"
00174	     IRCName="Chat"
00175	     MOTDName="News"
00176	     ServerListWindowClass="UBrowser.UBrowserServerListWindow"
00177	     FavoriteServersClass="UBrowser.UBrowserFavoriteServers"
00178	     UpdateServerClass="UBrowser.UBrowserUpdateServerWindow"
00179	}

End Source Code