Commit 4559c42e authored by mercury233's avatar mercury233

Merge branch 'master' of https://github.com/Fluorohydride/ygopro into server

parents cad43d22 eb94f4eb
This diff is collapsed.
...@@ -87,9 +87,7 @@ bool DataManager::ReadDB(sqlite3* pDB) { ...@@ -87,9 +87,7 @@ bool DataManager::ReadDB(sqlite3* pDB) {
} }
return true; return true;
} }
bool DataManager::LoadDB(const wchar_t* wfile) { bool DataManager::LoadDB(const char* file) {
char file[256];
BufferIO::EncodeUTF8(wfile, file);
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT) #if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
bool ret{}; bool ret{};
sqlite3* pDB{}; sqlite3* pDB{};
...@@ -98,12 +96,8 @@ bool DataManager::LoadDB(const wchar_t* wfile) { ...@@ -98,12 +96,8 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
else else
ret = ReadDB(pDB); ret = ReadDB(pDB);
sqlite3_close(pDB); sqlite3_close(pDB);
#else
#ifdef _IRR_WCHAR_FILESYSTEM
auto reader = FileSystem->createAndOpenFile(wfile);
#else #else
auto reader = FileSystem->createAndOpenFile(file); auto reader = FileSystem->createAndOpenFile(file);
#endif
if(reader == nullptr) if(reader == nullptr)
return false; return false;
spmemvfs_db_t db; spmemvfs_db_t db;
...@@ -449,13 +443,7 @@ unsigned char* DataManager::ScriptReaderEx(const char* script_path, int* slen) { ...@@ -449,13 +443,7 @@ unsigned char* DataManager::ScriptReaderEx(const char* script_path, int* slen) {
} }
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT) #if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
unsigned char* DataManager::ReadScriptFromIrrFS(const char* script_name, int* slen) { 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); auto reader = dataManager.FileSystem->createAndOpenFile(script_name);
#endif
if (!reader) if (!reader)
return nullptr; return nullptr;
int size = reader->read(scriptBuffer, sizeof scriptBuffer); int size = reader->read(scriptBuffer, sizeof scriptBuffer);
......
...@@ -65,7 +65,7 @@ class DataManager { ...@@ -65,7 +65,7 @@ class DataManager {
public: public:
DataManager(); DataManager();
bool ReadDB(sqlite3* pDB); bool ReadDB(sqlite3* pDB);
bool LoadDB(const wchar_t* wfile); bool LoadDB(const char* file);
#ifndef YGOPRO_SERVER_MODE #ifndef YGOPRO_SERVER_MODE
bool LoadStrings(const char* file); bool LoadStrings(const char* file);
bool LoadStrings(irr::io::IReadFile* reader); bool LoadStrings(irr::io::IReadFile* reader);
......
...@@ -286,13 +286,9 @@ FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) { ...@@ -286,13 +286,9 @@ FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
return fp; return fp;
} }
irr::io::IReadFile* DeckManager::OpenDeckReader(const wchar_t* file) { irr::io::IReadFile* DeckManager::OpenDeckReader(const wchar_t* file) {
#ifdef _IRR_WCHAR_FILESYSTEM
auto reader = dataManager.FileSystem->createAndOpenFile(file);
#else
char file2[256]; char file2[256];
BufferIO::EncodeUTF8(file, file2); BufferIO::EncodeUTF8(file, file2);
auto reader = dataManager.FileSystem->createAndOpenFile(file2); auto reader = dataManager.FileSystem->createAndOpenFile(file2);
#endif
return reader; return reader;
} }
bool DeckManager::LoadCurrentDeck(std::istringstream& deckStream, bool is_packlist) { bool DeckManager::LoadCurrentDeck(std::istringstream& deckStream, bool is_packlist) {
......
...@@ -78,7 +78,7 @@ void Game::MainServerLoop() { ...@@ -78,7 +78,7 @@ void Game::MainServerLoop() {
dataManager.FileSystem = new irr::io::CFileSystem(); dataManager.FileSystem = new irr::io::CFileSystem();
#endif #endif
deckManager.LoadLFList(); deckManager.LoadLFList();
dataManager.LoadDB(L"cards.cdb"); dataManager.LoadDB("cards.cdb");
LoadExpansions(); LoadExpansions();
#ifdef SERVER_PRO2_SUPPORT #ifdef SERVER_PRO2_SUPPORT
dataManager.FileSystem->addFileArchive("data/script.zip", true, false, irr::io::EFAT_ZIP); dataManager.FileSystem->addFileArchive("data/script.zip", true, false, irr::io::EFAT_ZIP);
...@@ -121,7 +121,7 @@ bool Game::Initialize() { ...@@ -121,7 +121,7 @@ bool Game::Initialize() {
return false; return false;
} }
dataManager.FileSystem = device->getFileSystem(); dataManager.FileSystem = device->getFileSystem();
if(!dataManager.LoadDB(L"cards.cdb")) { if(!dataManager.LoadDB("cards.cdb")) {
ErrorLog("Failed to load card database (cards.cdb)!"); ErrorLog("Failed to load card database (cards.cdb)!");
return false; return false;
} }
...@@ -1175,42 +1175,34 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, irr::u32 cW ...@@ -1175,42 +1175,34 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, irr::u32 cW
#endif //YGOPRO_SERVER_MODE #endif //YGOPRO_SERVER_MODE
void Game::LoadExpansions() { void Game::LoadExpansions() {
#ifdef SERVER_PRO2_SUPPORT #ifdef SERVER_PRO2_SUPPORT
FileSystem::TraversalDir(L"./cdb", [](const wchar_t* name, bool isdir) { FileSystem::TraversalDir("./cdb", [](const char* name, bool isdir) {
if (isdir) if (isdir)
return; return;
wchar_t fpath[1024]; char fpath[1024];
myswprintf(fpath, L"./cdb/%ls", name); mysnprintf(fpath, "./cdb/%s", name);
if(IsExtension(name, L".cdb")) { if(IsExtension(name, ".cdb")) {
dataManager.LoadDB(fpath); dataManager.LoadDB(fpath);
} }
}); });
#endif // SERVER_PRO2_SUPPORT #endif // SERVER_PRO2_SUPPORT
FileSystem::TraversalDir(L"./expansions", [](const wchar_t* name, bool isdir) { FileSystem::TraversalDir("./expansions", [](const char* name, bool isdir) {
if (isdir) if (isdir)
return; return;
wchar_t fpath[1024]; char fpath[1024];
myswprintf(fpath, L"./expansions/%ls", name); mysnprintf(fpath, "./expansions/%s", name);
if (IsExtension(name, L".cdb")) { if (IsExtension(name, ".cdb")) {
dataManager.LoadDB(fpath); dataManager.LoadDB(fpath);
return; return;
} }
#ifndef YGOPRO_SERVER_MODE #ifndef YGOPRO_SERVER_MODE
if (IsExtension(name, L".conf")) { if (IsExtension(name, ".conf")) {
char upath[1024]; dataManager.LoadStrings(fpath);
BufferIO::EncodeUTF8(fpath, upath);
dataManager.LoadStrings(upath);
return; return;
} }
#endif // YGOPRO_SERVER_MODE #endif // YGOPRO_SERVER_MODE
#if defined(SERVER_ZIP_SUPPORT) || !defined(YGOPRO_SERVER_MODE) #if defined(SERVER_ZIP_SUPPORT) || !defined(YGOPRO_SERVER_MODE)
if (IsExtension(name, L".zip") || IsExtension(name, L".ypk")) { if (IsExtension(name, ".zip") || IsExtension(name, ".ypk")) {
#ifdef _IRR_WCHAR_FILESYSTEM
dataManager.FileSystem->addFileArchive(fpath, true, false, irr::io::EFAT_ZIP); 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; return;
} }
#endif //SERVER_ZIP_SUPPORT #endif //SERVER_ZIP_SUPPORT
...@@ -1219,28 +1211,20 @@ void Game::LoadExpansions() { ...@@ -1219,28 +1211,20 @@ void Game::LoadExpansions() {
for(irr::u32 i = 0; i < dataManager.FileSystem->getFileArchiveCount(); ++i) { for(irr::u32 i = 0; i < dataManager.FileSystem->getFileArchiveCount(); ++i) {
auto archive = dataManager.FileSystem->getFileArchive(i)->getFileList(); auto archive = dataManager.FileSystem->getFileArchive(i)->getFileList();
for(irr::u32 j = 0; j < archive->getFileCount(); ++j) { for(irr::u32 j = 0; j < archive->getFileCount(); ++j) {
#ifdef _IRR_WCHAR_FILESYSTEM const char* name = archive->getFullFileName(j).c_str();
const wchar_t* fname = archive->getFullFileName(j).c_str(); if (IsExtension(name, ".cdb")) {
#else dataManager.LoadDB(name);
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);
continue; continue;
} }
#ifndef YGOPRO_SERVER_MODE #ifndef YGOPRO_SERVER_MODE
if (IsExtension(fname, L".conf")) { if (IsExtension(name, ".conf")) {
#ifdef _IRR_WCHAR_FILESYSTEM auto reader = dataManager.FileSystem->createAndOpenFile(name);
auto reader = dataManager.FileSystem->createAndOpenFile(fname);
#else
auto reader = dataManager.FileSystem->createAndOpenFile(uname);
#endif
dataManager.LoadStrings(reader); dataManager.LoadStrings(reader);
continue; 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); deckBuilder.expansionPacks.push_back(fname);
continue; continue;
} }
......
...@@ -193,13 +193,17 @@ int main(int argc, char* argv[]) { ...@@ -193,13 +193,17 @@ int main(int argc, char* argv[]) {
} }
} }
if(wargv[i][0] == L'-' && wargv[i][1] == L'e' && wargv[i][2] != L'\0') { 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; continue;
} }
if(!std::wcscmp(wargv[i], L"-e")) { // extra database if(!std::wcscmp(wargv[i], L"-e")) { // extra database
++i; ++i;
if(i < wargc) { if(i < wargc) {
ygo::dataManager.LoadDB(wargv[i]); char file[1024];
BufferIO::EncodeUTF8(wargv[i], file);
ygo::dataManager.LoadDB(file);
} }
continue; continue;
} else if(!std::wcscmp(wargv[i], L"-n")) { // nickName } else if(!std::wcscmp(wargv[i], L"-n")) { // nickName
......
...@@ -105,7 +105,6 @@ end ...@@ -105,7 +105,6 @@ end
filter "system:windows" filter "system:windows"
entrypoint "mainCRTStartup" entrypoint "mainCRTStartup"
defines { "_IRR_WCHAR_FILESYSTEM" }
files "ygopro.rc" files "ygopro.rc"
if SERVER_PRO2_SUPPORT then if SERVER_PRO2_SUPPORT then
targetname ("AI.Server") targetname ("AI.Server")
......
...@@ -37,8 +37,5 @@ project "irrlicht" ...@@ -37,8 +37,5 @@ project "irrlicht"
"source/Irrlicht/CZipReader.cpp" "source/Irrlicht/CZipReader.cpp"
} }
filter { "system:windows" }
defines { "_IRR_WCHAR_FILESYSTEM" }
filter { "system:macosx" } filter { "system:macosx" }
cppdialect "gnu++14" cppdialect "gnu++14"
...@@ -154,7 +154,6 @@ project "irrlicht" ...@@ -154,7 +154,6 @@ project "irrlicht"
} }
filter { "system:windows" } filter { "system:windows" }
defines { "_IRR_WCHAR_FILESYSTEM" }
if USE_DXSDK then if USE_DXSDK then
includedirs { "$(DXSDK_DIR)Include" } includedirs { "$(DXSDK_DIR)Include" }
else 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