about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChoupom <andycootlapin@hotmail.fr>2010-10-30 18:56:57 +0200
committeroy <Tom_Adams@web.de>2010-11-17 12:31:44 +0100
commita7f37446b62630d751ea7edd5b4a396385887869 (patch)
tree16d2412704248915d99fe76f7c3d7c4158698630
parent57a92359972b789c8de5794619e62f339fa10707 (diff)
downloadzcatch-a7f37446b62630d751ea7edd5b4a396385887869.tar.gz
zcatch-a7f37446b62630d751ea7edd5b4a396385887869.zip
added loading progression in server browser
-rw-r--r--src/engine/client/srvbrowse.cpp12
-rw-r--r--src/engine/client/srvbrowse.h1
-rw-r--r--src/engine/serverbrowser.h1
-rw-r--r--src/game/client/components/menus_browser.cpp4
4 files changed, 15 insertions, 3 deletions
diff --git a/src/engine/client/srvbrowse.cpp b/src/engine/client/srvbrowse.cpp
index aed0d514..5835bb3b 100644
--- a/src/engine/client/srvbrowse.cpp
+++ b/src/engine/client/srvbrowse.cpp
@@ -615,7 +615,6 @@ void CServerBrowser::Update()
 		{
 			// timeout
 			RemoveRequest(pEntry);
-			m_NumRequests--;
 		}
 
 		pEntry = pNext;
@@ -715,6 +714,17 @@ bool CServerBrowser::IsRefreshingMasters() const
 }
 
 
+int CServerBrowser::LoadingProgression() const
+{
+	if(m_NumServers == 0)
+		return 0;
+	
+	int Servers = m_NumServers;
+	int Loaded = m_NumServers-m_NumRequests;
+	return 100.0f * Loaded/Servers;
+}
+
+
 void CServerBrowser::ConfigSaveCallback(IConfig *pConfig, void *pUserData)
 {
 	CServerBrowser *pSelf = (CServerBrowser *)pUserData;
diff --git a/src/engine/client/srvbrowse.h b/src/engine/client/srvbrowse.h
index ecaed7ef..ebcdbb30 100644
--- a/src/engine/client/srvbrowse.h
+++ b/src/engine/client/srvbrowse.h
@@ -30,6 +30,7 @@ public:
 	// interface functions
 	void Refresh(int Type);
 	bool IsRefreshingMasters() const;
+	int LoadingProgression() const;
 
 	int NumServers() const { return m_NumServers; }
 
diff --git a/src/engine/serverbrowser.h b/src/engine/serverbrowser.h
index 43732f13..4409e9bc 100644
--- a/src/engine/serverbrowser.h
+++ b/src/engine/serverbrowser.h
@@ -79,6 +79,7 @@ public:
 
 	virtual void Refresh(int Type) = 0;
 	virtual bool IsRefreshingMasters() const = 0;
+	virtual int LoadingProgression() const = 0;
 	
 	virtual int NumServers() const = 0;
 	
diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp
index 409c81f6..ff3d7b3a 100644
--- a/src/game/client/components/menus_browser.cpp
+++ b/src/game/client/components/menus_browser.cpp
@@ -392,10 +392,10 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
 			UI()->SetActiveItem(&g_Config.m_BrFilterString);
 		}
 	}
-
+	
 	// render status
 	char aBuf[128];
-	str_format(aBuf, sizeof(aBuf), Localize("%d of %d servers, %d players"), ServerBrowser()->NumSortedServers(), ServerBrowser()->NumServers(), NumPlayers);
+	str_format(aBuf, sizeof(aBuf), Localize("%d of %d servers, %d players (%d%% loaded)"), ServerBrowser()->NumSortedServers(), ServerBrowser()->NumServers(), NumPlayers, ServerBrowser()->LoadingProgression());
 	Status.VSplitRight(TextRender()->TextWidth(0, 14.0f, aBuf, -1), 0, &Status);
 	UI()->DoLabel(&Status, aBuf, 14.0f, -1);
 }