diff options
| author | Choupom <andycootlapin@hotmail.fr> | 2010-09-03 21:41:37 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-09-05 14:13:42 +0200 |
| commit | 8f3e98208ec750276f67e52de24ff00716d2095f (patch) | |
| tree | 996479f043f79b076f6eb8844db7a7d7c5e0fe8c /src/game/client | |
| parent | 885d695f9292a44280d34efe1f294b43b23b789f (diff) | |
| download | zcatch-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.cpp | 39 |
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'; } } |