about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
authorChoupom <andycootlapin@hotmail.fr>2010-09-03 21:41:37 +0200
committeroy <Tom_Adams@web.de>2010-09-05 14:13:42 +0200
commit8f3e98208ec750276f67e52de24ff00716d2095f (patch)
tree996479f043f79b076f6eb8844db7a7d7c5e0fe8c /src/game/client
parent885d695f9292a44280d34efe1f294b43b23b789f (diff)
downloadzcatch-8f3e98208ec750276f67e52de24ff00716d2095f.tar.gz
zcatch-8f3e98208ec750276f67e52de24ff00716d2095f.zip
fixed demo browser (#61)
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/components/menus_demo.cpp39
1 files changed, 18 insertions, 21 deletions
diff --git a/src/game/client/components/menus_demo.cpp b/src/game/client/components/menus_demo.cpp
index 45a96d80..b356bb33 100644
--- a/src/game/client/components/menus_demo.cpp
+++ b/src/game/client/components/menus_demo.cpp
@@ -399,7 +399,6 @@ struct FETCH_CALLBACKINFO
 {
 	CMenus *m_pSelf;
 	const char *m_pPrefix;
-	int m_Count;
 };
 
 void CMenus::DemolistFetchCallback(const char *pName, int IsDir, void *pUser)
@@ -420,7 +419,7 @@ void CMenus::DemolistPopulate()
 	m_lDemos.clear();
 	
 	
-	if(str_comp_num(m_aCurrentDemoFolder, "demos", 256)) //add parent folder
+	if(str_comp(m_aCurrentDemoFolder, "demos") != 0) //add parent folder
 	{
 		CDemoItem Item;
 		str_copy(Item.m_aName, "..", sizeof(Item.m_aName));
@@ -432,7 +431,7 @@ void CMenus::DemolistPopulate()
 	char aBuf[512];
 	str_format(aBuf, sizeof(aBuf), "%s/%s", Client()->UserDirectory(), m_aCurrentDemoFolder);
 	
-	FETCH_CALLBACKINFO Info = {this, aBuf, m_aCurrentDemoFolder[6]}; //skip "demos/"
+	FETCH_CALLBACKINFO Info = {this, aBuf};
 	fs_listdir(aBuf, DemolistFetchCallback, &Info);
 	Info.m_pPrefix = m_aCurrentDemoFolder;
 	fs_listdir(m_aCurrentDemoFolder, DemolistFetchCallback, &Info);
@@ -474,13 +473,12 @@ void CMenus::RenderDemoList(CUIRect MainView)
 	RefreshRect.VSplitRight(130.0f, &RefreshRect, &PlayRect);
 	PlayRect.VSplitRight(120.0f, 0x0, &PlayRect);
 	
-	
 	bool IsDir = false;
-	if(!str_comp_num(m_lDemos[s_SelectedItem].m_aName, "..", 256)) //parent folder
-		IsDir = true;
-	else if(fs_is_dir(m_lDemos[s_SelectedItem].m_aFilename))
-		IsDir = true;
-	
+	if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size())
+	{
+		if(str_comp(m_lDemos[s_SelectedItem].m_aName, "..") == 0 || fs_is_dir(m_lDemos[s_SelectedItem].m_aFilename))
+			IsDir = true;
+	}
 	
 	static int s_RefreshButton = 0;
 	if(DoButton_Menu(&s_RefreshButton, Localize("Refresh"), 0, &RefreshRect))
@@ -496,22 +494,24 @@ void CMenus::RenderDemoList(CUIRect MainView)
 		str_copy(aTitleButton, Localize("Play"), sizeof(aTitleButton));
 	
 	if(DoButton_Menu(&s_PlayButton, aTitleButton, 0, &PlayRect) || Activated)
-	{		
+	{
 		if(s_SelectedItem >= 0 && s_SelectedItem < m_lDemos.size())
 		{
-			if(!str_comp_num(m_lDemos[s_SelectedItem].m_aName, "..", 256))
+			if(str_comp(m_lDemos[s_SelectedItem].m_aName, "..") == 0) //parent folder
 			{
 				DemoSetParentDirectory();
 				DemolistPopulate();
-				s_SelectedItem = 0;
+				s_SelectedItem = -1;
 			}
-			else if(IsDir)
+			else if(IsDir) //folder
 			{
-				str_format(m_aCurrentDemoFolder, sizeof(m_aCurrentDemoFolder), "%s/%s", m_aCurrentDemoFolder, m_lDemos[s_SelectedItem].m_aName);
+				char aTemp[256];
+				str_copy(aTemp, m_aCurrentDemoFolder, sizeof(aTemp));
+				str_format(m_aCurrentDemoFolder, sizeof(m_aCurrentDemoFolder), "%s/%s", aTemp, m_lDemos[s_SelectedItem].m_aName);
 				DemolistPopulate();
 				s_SelectedItem = 0;
 			}
-			else
+			else //file
 			{
 				const char *pError = Client()->DemoPlayer_Play(m_lDemos[s_SelectedItem].m_aFilename);
 				if(pError)
@@ -522,22 +522,19 @@ void CMenus::RenderDemoList(CUIRect MainView)
 	
 }
 
-
-
 void CMenus::DemoSetParentDirectory()
 {
 	int Stop = 0;
-	int i;
-	for(i = 0; i < 256; i++)
+	for(int i = 0; i < 256; i++)
 	{
 		if(m_aCurrentDemoFolder[i] == '/')
 			Stop = i;
 	}
 	
 	//keeps chars which are before the last '/' and remove chars which are after
-	for(i = 0; i < 256; i++)
+	for(int i = 0; i < 256; i++)
 	{
 		if(i >= Stop)
-			m_aCurrentDemoFolder[i] = 0;
+			m_aCurrentDemoFolder[i] = '\0';
 	}
 }