Commit 8bab4b78 authored by mercury233's avatar mercury233

remove _IRR_WCHAR_FILESYSTEM and make DataManager::LoadDB accept char*

parent bbd99ad4
......@@ -77,14 +77,8 @@ bool DataManager::ReadDB(sqlite3* pDB) {
}
return true;
}
bool DataManager::LoadDB(const wchar_t* wfile) {
char file[256];
BufferIO::EncodeUTF8(wfile, file);
#ifdef _IRR_WCHAR_FILESYSTEM
auto reader = FileSystem->createAndOpenFile(wfile);
#else
bool DataManager::LoadDB(const char* file) {
auto reader = FileSystem->createAndOpenFile(file);
#endif
if(reader == nullptr)
return false;
spmemvfs_db_t db;
......@@ -394,13 +388,7 @@ unsigned char* DataManager::ScriptReaderEx(const char* script_path, int* slen) {
return nullptr;
}
unsigned char* DataManager::ReadScriptFromIrrFS(const char* script_name, int* slen) {
#ifdef _IRR_WCHAR_FILESYSTEM
wchar_t fname[256]{};
BufferIO::DecodeUTF8(script_name, fname);
auto reader = dataManager.FileSystem->createAndOpenFile(fname);
#else
auto reader = dataManager.FileSystem->createAndOpenFile(script_name);
#endif
if (!reader)
return nullptr;
int size = reader->read(scriptBuffer, sizeof scriptBuffer);
......
......@@ -65,7 +65,7 @@ class DataManager {
public:
DataManager();
bool ReadDB(sqlite3* pDB);
bool LoadDB(const wchar_t* wfile);
bool LoadDB(const char* file);
bool LoadStrings(const char* file);
bool LoadStrings(irr::io::IReadFile* reader);
void ReadStringConfLine(const char* linebuf);
......
......@@ -278,13 +278,9 @@ FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
return fp;
}
irr::io::IReadFile* DeckManager::OpenDeckReader(const wchar_t* file) {
#ifdef _IRR_WCHAR_FILESYSTEM
auto reader = dataManager.FileSystem->createAndOpenFile(file);
#else
char file2[256];
BufferIO::EncodeUTF8(file, file2);
auto reader = dataManager.FileSystem->createAndOpenFile(file2);
#endif
return reader;
}
bool DeckManager::LoadCurrentDeck(std::istringstream& deckStream, bool is_packlist) {
......
......@@ -75,7 +75,7 @@ bool Game::Initialize() {
return false;
}
dataManager.FileSystem = device->getFileSystem();
if(!dataManager.LoadDB(L"cards.cdb")) {
if(!dataManager.LoadDB("cards.cdb")) {
ErrorLog("Failed to load card database (cards.cdb)!");
return false;
}
......@@ -1127,56 +1127,40 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, irr::u32 cW
return result;
}
void Game::LoadExpansions() {
FileSystem::TraversalDir(L"./expansions", [](const wchar_t* name, bool isdir) {
FileSystem::TraversalDir("./expansions", [](const char* name, bool isdir) {
if (isdir)
return;
wchar_t fpath[1024];
myswprintf(fpath, L"./expansions/%ls", name);
if (IsExtension(name, L".cdb")) {
char fpath[1024];
mysnprintf(fpath, "./expansions/%s", name);
if (IsExtension(name, ".cdb")) {
dataManager.LoadDB(fpath);
return;
}
if (IsExtension(name, L".conf")) {
char upath[1024];
BufferIO::EncodeUTF8(fpath, upath);
dataManager.LoadStrings(upath);
if (IsExtension(name, ".conf")) {
dataManager.LoadStrings(fpath);
return;
}
if (IsExtension(name, L".zip") || IsExtension(name, L".ypk")) {
#ifdef _IRR_WCHAR_FILESYSTEM
if (IsExtension(name, ".zip") || IsExtension(name, ".ypk")) {
dataManager.FileSystem->addFileArchive(fpath, true, false, irr::io::EFAT_ZIP);
#else
char upath[1024];
BufferIO::EncodeUTF8(fpath, upath);
dataManager.FileSystem->addFileArchive(upath, true, false, irr::io::EFAT_ZIP);
#endif
return;
}
});
for(irr::u32 i = 0; i < dataManager.FileSystem->getFileArchiveCount(); ++i) {
auto archive = dataManager.FileSystem->getFileArchive(i)->getFileList();
for(irr::u32 j = 0; j < archive->getFileCount(); ++j) {
#ifdef _IRR_WCHAR_FILESYSTEM
const wchar_t* fname = archive->getFullFileName(j).c_str();
#else
wchar_t fname[1024];
const char* uname = archive->getFullFileName(j).c_str();
BufferIO::DecodeUTF8(uname, fname);
#endif
if (IsExtension(fname, L".cdb")) {
dataManager.LoadDB(fname);
const char* name = archive->getFullFileName(j).c_str();
if (IsExtension(name, ".cdb")) {
dataManager.LoadDB(name);
continue;
}
if (IsExtension(fname, L".conf")) {
#ifdef _IRR_WCHAR_FILESYSTEM
auto reader = dataManager.FileSystem->createAndOpenFile(fname);
#else
auto reader = dataManager.FileSystem->createAndOpenFile(uname);
#endif
if (IsExtension(name, ".conf")) {
auto reader = dataManager.FileSystem->createAndOpenFile(name);
dataManager.LoadStrings(reader);
continue;
}
if (!mywcsncasecmp(fname, L"pack/", 5) && IsExtension(fname, L".ydk")) {
if (!mystrncasecmp(name, "pack/", 5) && IsExtension(name, ".ydk")) {
wchar_t fname[1024];
BufferIO::DecodeUTF8(name, fname);
deckBuilder.expansionPacks.push_back(fname);
continue;
}
......
......@@ -109,13 +109,17 @@ int main(int argc, char* argv[]) {
}
}
if(wargv[i][0] == L'-' && wargv[i][1] == L'e' && wargv[i][2] != L'\0') {
ygo::dataManager.LoadDB(&wargv[i][2]);
char file[1024];
BufferIO::EncodeUTF8(wargv[i] + 2, file);
ygo::dataManager.LoadDB(file);
continue;
}
if(!std::wcscmp(wargv[i], L"-e")) { // extra database
++i;
if(i < wargc) {
ygo::dataManager.LoadDB(wargv[i]);
char file[1024];
BufferIO::EncodeUTF8(wargv[i], file);
ygo::dataManager.LoadDB(file);
}
continue;
} else if(!std::wcscmp(wargv[i], L"-n")) { // nickName
......
......@@ -72,7 +72,6 @@ project "YGOPro"
filter "system:windows"
entrypoint "mainCRTStartup"
defines { "_IRR_WCHAR_FILESYSTEM" }
files "ygopro.rc"
links { "ws2_32", "iphlpapi" }
if USE_AUDIO and AUDIO_LIB == "irrklang" then
......
......@@ -154,7 +154,6 @@ project "irrlicht"
}
filter { "system:windows" }
defines { "_IRR_WCHAR_FILESYSTEM" }
if USE_DXSDK then
includedirs { "$(DXSDK_DIR)Include" }
else
......
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