mirror of https://github.com/axmolengine/axmol.git
120 lines
2.4 KiB
C++
120 lines
2.4 KiB
C++
![]() |
|
||
|
#include "Runtime.h"
|
||
|
|
||
|
#include <io.h>
|
||
|
#include <direct.h>
|
||
|
#include <stdio.h>
|
||
|
#include <vector>
|
||
|
#include <string>
|
||
|
|
||
|
using namespace std;
|
||
|
|
||
|
bool browseDir(const char *dir,const char *filespec,vector<string> &filterArray,vector<string> &fileList)
|
||
|
{
|
||
|
if (chdir(dir) != 0)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
long hFile;
|
||
|
_finddata_t fileinfo;
|
||
|
if ((hFile=_findfirst(filespec,&fileinfo)) != -1)
|
||
|
{
|
||
|
do
|
||
|
{
|
||
|
if ((fileinfo.attrib & _A_SUBDIR))
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
char *pszexten=strrchr(fileinfo.name,'.');
|
||
|
char szextension[_MAX_PATH_]={0};
|
||
|
if (pszexten)
|
||
|
{
|
||
|
strcpy(szextension,"*");
|
||
|
strcat(szextension,pszexten);
|
||
|
if (find(filterArray.begin(),filterArray.end(),szextension) != filterArray.end())
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
strcpy(szextension,fileinfo.name);
|
||
|
if (find(filterArray.begin(),filterArray.end(),szextension) != filterArray.end())
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
char fullFileName[_MAX_PATH_] ={0};
|
||
|
sprintf(fullFileName,"%s%s",dir,fileinfo.name);
|
||
|
fileList.push_back(fullFileName);
|
||
|
} while (_findnext(hFile,&fileinfo) == 0);
|
||
|
_findclose(hFile);
|
||
|
}
|
||
|
|
||
|
if (chdir(dir) != 0)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
if ((hFile=_findfirst("*.*",&fileinfo)) != -1)
|
||
|
{
|
||
|
do
|
||
|
{
|
||
|
if(!(fileinfo.attrib & _A_SUBDIR))
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if (strcmp(fileinfo.name,".") == 0 || strcmp(fileinfo.name,"..") == 0)
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if (find(filterArray.begin(),filterArray.end(),fileinfo.name) != filterArray.end())
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
char subdir[_MAX_PATH_]={0};
|
||
|
sprintf(subdir,"%s%s/",dir,fileinfo.name);
|
||
|
if (!browseDir(subdir,filespec,filterArray,fileList))
|
||
|
{
|
||
|
_findclose(hFile);
|
||
|
return false;
|
||
|
}
|
||
|
} while (_findnext(hFile,&fileinfo) == 0);
|
||
|
_findclose(hFile);
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
string getProjSearchPath()
|
||
|
{
|
||
|
extern std::string getCurAppPath(void);
|
||
|
string searchPath = getCurAppPath();
|
||
|
searchPath += "/../../..";
|
||
|
char fuldir[_MAX_PATH_]={0};
|
||
|
_fullpath(fuldir,searchPath.c_str(),_MAX_PATH_);
|
||
|
return fuldir;
|
||
|
}
|
||
|
|
||
|
vector<string> getSearchPath()
|
||
|
{
|
||
|
extern std::string getCurAppPath(void);
|
||
|
vector<string> searchPathArray;
|
||
|
string searchPathRes = getCurAppPath();
|
||
|
searchPathRes += "/Resources";
|
||
|
searchPathArray.push_back(getProjSearchPath());
|
||
|
searchPathArray.push_back(searchPathRes);
|
||
|
return searchPathArray;
|
||
|
}
|
||
|
|
||
|
string getDotWaitFilePath()
|
||
|
{
|
||
|
extern std::string getCurAppPath(void);
|
||
|
string dotwaitFile = getCurAppPath();
|
||
|
dotwaitFile += "/.wait";
|
||
|
return dotwaitFile;
|
||
|
}
|