about summary refs log tree commit diff
path: root/src/engine/client/client.cpp
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-03-18 19:03:13 +0100
committeroy <Tom_Adams@web.de>2011-03-18 19:03:13 +0100
commita8bf857c6877679ff943ad9dbfba5aac1870ccae (patch)
treed6ec05d43c840242e8036af662c2d38cf189670a /src/engine/client/client.cpp
parenta3c9ec889f487c2de307f41904454e85b0efa21c (diff)
downloadzcatch-a8bf857c6877679ff943ad9dbfba5aac1870ccae.tar.gz
zcatch-a8bf857c6877679ff943ad9dbfba5aac1870ccae.zip
improved server browser list resorting and made search work on IP addresses. Closes #482
Diffstat (limited to 'src/engine/client/client.cpp')
-rw-r--r--src/engine/client/client.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp
index 49abd2e9..7277cecd 100644
--- a/src/engine/client/client.cpp
+++ b/src/engine/client/client.cpp
@@ -1760,7 +1760,8 @@ void CClient::Update()
 	MasterServer()->Update();
 
 	// update the server browser
-	m_ServerBrowser.Update();
+	m_ServerBrowser.Update(m_ResortServerBrowser);
+	m_ResortServerBrowser = false;
 }
 
 void CClient::VersionUpdate()
@@ -2234,6 +2235,18 @@ void CClient::Con_StopRecord(IConsole::IResult *pResult, void *pUserData)
 	pSelf->DemoRecorder_Stop();
 }
 
+void CClient::ServerBrowserUpdate()
+{
+	m_ResortServerBrowser = true;
+}
+
+void CClient::ConchainServerBrowserUpdate(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData)
+{
+	pfnCallback(pResult, pCallbackUserData);
+	if(pResult->NumArguments())
+		((CClient *)pUserData)->ServerBrowserUpdate();
+}
+
 void CClient::RegisterCommands()
 {
 	m_pConsole = Kernel()->RequestInterface<IConsole>();
@@ -2260,8 +2273,12 @@ void CClient::RegisterCommands()
 	m_pConsole->Register("play", "r", CFGFLAG_CLIENT, Con_Play, this, "Play the file specified");
 	m_pConsole->Register("record", "?s", CFGFLAG_CLIENT, Con_Record, this, "Record to the file");
 	m_pConsole->Register("stoprecord", "", CFGFLAG_CLIENT, Con_StopRecord, this, "Stop recording");
-
 	m_pConsole->Register("add_favorite", "s", CFGFLAG_CLIENT, Con_AddFavorite, this, "Add a server as a favorite");
+
+	// used for server browser update
+	m_pConsole->Chain("br_filter_string", ConchainServerBrowserUpdate, this);
+	m_pConsole->Chain("br_filter_gametype", ConchainServerBrowserUpdate, this);
+	m_pConsole->Chain("br_filter_serveraddress", ConchainServerBrowserUpdate, this);
 }
 
 static CClient m_Client;