Commit b90f224b authored by mercury233's avatar mercury233

update

parent 01e9295f
...@@ -38,31 +38,34 @@ void SoundManager::RefreshBGMList() { ...@@ -38,31 +38,34 @@ void SoundManager::RefreshBGMList() {
void SoundManager::RefershBGMDir(std::wstring path, int scene) { void SoundManager::RefershBGMDir(std::wstring path, int scene) {
#ifdef _WIN32 #ifdef _WIN32
WIN32_FIND_DATAW fdataw; WIN32_FIND_DATAW fdataw;
std::wstring search = L"./sound/BGM/" + path + L"*.mp3"; std::wstring search = L"./sound/BGM/" + path + L"*.*";
HANDLE fh = FindFirstFileW(search.c_str(), &fdataw); HANDLE fh = FindFirstFileW(search.c_str(), &fdataw);
if(fh == INVALID_HANDLE_VALUE) if(fh == INVALID_HANDLE_VALUE)
return; return;
do { do {
if(!(fdataw.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { size_t len = wcslen(fdataw.cFileName);
std::wstring filename = path + (std::wstring)fdataw.cFileName; if((fdataw.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) || len < 5
BGMList[BGM_ALL].push_back(filename); || !(wcsicmp(fdataw.cFileName + len - 4, L".mp3") == 0 || wcsicmp(fdataw.cFileName + len - 4, L".ogg") == 0))
BGMList[scene].push_back(filename); continue;
} std::wstring filename = path + (std::wstring)fdataw.cFileName;
BGMList[BGM_ALL].push_back(filename);
BGMList[scene].push_back(filename);
} while(FindNextFileW(fh, &fdataw)); } while(FindNextFileW(fh, &fdataw));
FindClose(fh); FindClose(fh);
#else #else
// not fully implemented
DIR * dir; DIR * dir;
struct dirent * dirp; struct dirent * dirp;
if((dir = opendir("./sound/BGM/")) == NULL) std::wstring searchpath = L"./sound/BGM/" + path;
if((dir = opendir(searchpath.c_str())) == NULL)
return; return;
while((dirp = readdir(dir)) != NULL) { while((dirp = readdir(dir)) != NULL) {
size_t len = strlen(dirp->d_name); size_t len = strlen(dirp->d_name);
if(len < 5 || strcasecmp(dirp->d_name + len - 4, ".ogg") != 0) if(len < 5 || !(strcasecmp(dirp->d_name + len - 4, ".mp3") == 0 || strcasecmp(dirp->d_name + len - 4, ".ogg")))
continue; continue;
wchar_t wname[256]; wchar_t wname[256];
BufferIO::DecodeUTF8(dirp->d_name, wname); BufferIO::DecodeUTF8(dirp->d_name, wname);
BGMList[BGM_ALL].push_back(wname); BGMList[BGM_ALL].push_back(wname);
BGMList[scene].push_back(wname);
} }
closedir(dir); closedir(dir);
#endif #endif
......
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#endif #endif
#endif #endif
#define wcsicmp _wcsicmp
namespace ygo { namespace ygo {
class SoundManager { class SoundManager {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment