mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 22:48:18 +00:00
fixed that it checks the current dir for demos too
This commit is contained in:
parent
1cbf731fc0
commit
7e0b37e06c
|
@ -863,7 +863,7 @@ int net_init()
|
|||
return 0;
|
||||
}
|
||||
|
||||
int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, void *user)
|
||||
int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, int type, void *user)
|
||||
{
|
||||
#if defined(CONF_FAMILY_WINDOWS)
|
||||
WIN32_FIND_DATA finddata;
|
||||
|
@ -880,7 +880,7 @@ int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, void *user)
|
|||
do
|
||||
{
|
||||
if(finddata.cFileName[0] != '.')
|
||||
cb(finddata.cFileName, 0, user);
|
||||
cb(finddata.cFileName, 0, type, user);
|
||||
} while (FindNextFileA(handle, &finddata));
|
||||
|
||||
FindClose(handle);
|
||||
|
@ -893,7 +893,7 @@ int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, void *user)
|
|||
return 0;
|
||||
|
||||
while((entry = readdir(d)) != NULL)
|
||||
cb(entry->d_name, 0, user);
|
||||
cb(entry->d_name, 0, type, user);
|
||||
|
||||
/* close the directory and return */
|
||||
closedir(d);
|
||||
|
|
|
@ -888,13 +888,14 @@ void str_hex(char *dst, int dst_size, const void *data, int data_size);
|
|||
Parameters:
|
||||
dir - Directory to list
|
||||
cb - Callback function to call for each entry
|
||||
type - Type of the directory
|
||||
user - Pointer to give to the callback
|
||||
|
||||
Returns:
|
||||
Always returns 0.
|
||||
*/
|
||||
typedef void (*FS_LISTDIR_CALLBACK)(const char *name, int is_dir, void *user);
|
||||
int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, void *user);
|
||||
typedef void (*FS_LISTDIR_CALLBACK)(const char *name, int is_dir, int dir_type, void *user);
|
||||
int fs_listdir(const char *dir, FS_LISTDIR_CALLBACK cb, int type, void *user);
|
||||
|
||||
/*
|
||||
Function: fs_makedir
|
||||
|
|
|
@ -137,21 +137,31 @@ public:
|
|||
// list current directory
|
||||
if(Types&TYPE_CURRENT)
|
||||
{
|
||||
fs_listdir(pPath, pfnCallback, pUser);
|
||||
fs_listdir(pPath, pfnCallback, TYPE_CURRENT, pUser);
|
||||
}
|
||||
|
||||
// list users directory
|
||||
if(Types&TYPE_SAVE)
|
||||
{
|
||||
str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aApplicationSavePath, pPath);
|
||||
fs_listdir(aBuffer, pfnCallback, pUser);
|
||||
fs_listdir(aBuffer, pfnCallback, TYPE_SAVE, pUser);
|
||||
}
|
||||
|
||||
// list datadir directory
|
||||
if(Types&TYPE_DATA)
|
||||
{
|
||||
str_format(aBuffer, sizeof(aBuffer), "%s/%s", m_aDatadir, pPath);
|
||||
fs_listdir(aBuffer, pfnCallback, pUser);
|
||||
fs_listdir(aBuffer, pfnCallback, TYPE_DATA, pUser);
|
||||
}
|
||||
}
|
||||
|
||||
virtual const char *GetDirectory(int Type) const
|
||||
{
|
||||
switch(Type)
|
||||
{
|
||||
case TYPE_SAVE: return m_aApplicationSavePath;
|
||||
case TYPE_DATA: return m_aDatadir;
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ public:
|
|||
};
|
||||
|
||||
virtual void ListDirectory(int Types, const char *pPath, FS_LISTDIR_CALLBACK pfnCallback, void *pUser) = 0;
|
||||
virtual const char *GetDirectory(int Type) const = 0;
|
||||
virtual IOHANDLE OpenFile(const char *pFilename, int Flags, char *pBuffer = 0, int BufferSize = 0) = 0;
|
||||
virtual bool RemoveFile(const char *pFilename) = 0;
|
||||
};
|
||||
|
|
|
@ -167,8 +167,7 @@ class CMenus : public CComponent
|
|||
bool m_DemolistDelEntry;
|
||||
|
||||
void DemolistPopulate();
|
||||
static void DemolistCountCallback(const char *pName, int IsDir, void *pUser);
|
||||
static void DemolistFetchCallback(const char *pName, int IsDir, void *pUser);
|
||||
static void DemolistFetchCallback(const char *pName, int IsDir, int DirType, void *pUser);
|
||||
|
||||
// found in menus.cpp
|
||||
int Render();
|
||||
|
|
|
@ -408,7 +408,7 @@ int CMenus::UiDoListboxEnd(float *pScrollValue, bool *pItemActivated)
|
|||
return gs_ListBoxNewSelected;
|
||||
}
|
||||
|
||||
void CMenus::DemolistFetchCallback(const char *pName, int IsDir, void *pUser)
|
||||
void CMenus::DemolistFetchCallback(const char *pName, int IsDir, int DirType, void *pUser)
|
||||
{
|
||||
if(pName[0] == '.')
|
||||
return;
|
||||
|
@ -416,7 +416,8 @@ void CMenus::DemolistFetchCallback(const char *pName, int IsDir, void *pUser)
|
|||
CMenus *pSelf = (CMenus *)pUser;
|
||||
|
||||
CDemoItem Item;
|
||||
str_format(Item.m_aFilename, sizeof(Item.m_aFilename), "%s/%s/%s", pSelf->Client()->UserDirectory(), pSelf->m_aCurrentDemoFolder, pName);
|
||||
str_format(Item.m_aFilename, sizeof(Item.m_aFilename), "%s%s%s/%s", pSelf->Storage()->GetDirectory(DirType),
|
||||
pSelf->Storage()->GetDirectory(DirType)[0] ? "/" : "", pSelf->m_aCurrentDemoFolder, pName);
|
||||
str_copy(Item.m_aName, pName, sizeof(Item.m_aName));
|
||||
pSelf->m_lDemos.add(Item);
|
||||
}
|
||||
|
@ -433,7 +434,7 @@ void CMenus::DemolistPopulate()
|
|||
m_lDemos.add(Item);
|
||||
}
|
||||
|
||||
Storage()->ListDirectory(IStorage::TYPE_SAVE, m_aCurrentDemoFolder, DemolistFetchCallback, this);
|
||||
Storage()->ListDirectory(IStorage::TYPE_SAVE|IStorage::TYPE_CURRENT, m_aCurrentDemoFolder, DemolistFetchCallback, this);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
#include "skins.h"
|
||||
|
||||
void CSkins::SkinScan(const char *pName, int IsDir, void *pUser)
|
||||
void CSkins::SkinScan(const char *pName, int IsDir, int DirType, void *pUser)
|
||||
{
|
||||
CSkins *pSelf = (CSkins *)pUser;
|
||||
int l = str_length(pName);
|
||||
|
|
|
@ -28,6 +28,6 @@ public:
|
|||
private:
|
||||
sorted_array<CSkin> m_aSkins;
|
||||
|
||||
static void SkinScan(const char *pName, int IsDir, void *pUser);
|
||||
static void SkinScan(const char *pName, int IsDir, int DirType, void *pUser);
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -2146,7 +2146,7 @@ void CEditor::RenderImages(CUIRect ToolBox, CUIRect ToolBar, CUIRect View)
|
|||
}
|
||||
|
||||
|
||||
static void EditorListdirCallback(const char *pName, int IsDir, void *pUser)
|
||||
static void EditorListdirCallback(const char *pName, int IsDir, int DirType, void *pUser)
|
||||
{
|
||||
if(pName[0] == '.' && pName[1] == 0)
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue