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) {
}
return true;
}
bool DataManager::LoadDB(const wchar_t* wfile) {
char file[256];
BufferIO::EncodeUTF8(wfile, file);
bool DataManager::LoadDB(const char* file) {
#if defined(YGOPRO_SERVER_MODE) && !defined(SERVER_ZIP_SUPPORT)
bool ret{};
sqlite3* pDB{};
......@@ -98,12 +96,8 @@ bool DataManager::LoadDB(const wchar_t* wfile) {
else
ret = ReadDB(pDB);
sqlite3_close(pDB);
#else
#ifdef _IRR_WCHAR_FILESYSTEM
auto reader = FileSystem->createAndOpenFile(wfile);
#else
auto reader = FileSystem->createAndOpenFile(file);
#endif
if(reader == nullptr)
return false;
spmemvfs_db_t db;
......@@ -449,13 +443,7 @@ unsigned char* DataManager::ScriptReaderEx(const char* script_path, int* slen) {
}
#if !defined(YGOPRO_SERVER_MODE) || defined(SERVER_ZIP_SUPPORT)
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);
#ifndef YGOPRO_SERVER_MODE
bool LoadStrings(const char* file);
bool LoadStrings(irr::io::IReadFile* reader);
......
......@@ -286,13 +286,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) {
......
......@@ -78,7 +78,7 @@ void Game::MainServerLoop() {
dataManager.FileSystem = new irr::io::CFileSystem();
#endif
deckManager.LoadLFList();
dataManager.LoadDB(L"cards.cdb");
dataManager.LoadDB("cards.cdb");
LoadExpansions();
#ifdef SERVER_PRO2_SUPPORT
dataManager.FileSystem->addFileArchive("data/script.zip", true, false, irr::io::EFAT_ZIP);
......@@ -121,7 +121,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;
}
......@@ -1175,42 +1175,34 @@ std::wstring Game::SetStaticText(irr::gui::IGUIStaticText* pControl, irr::u32 cW
#endif //YGOPRO_SERVER_MODE
void Game::LoadExpansions() {
#ifdef SERVER_PRO2_SUPPORT
FileSystem::TraversalDir(L"./cdb", [](const wchar_t* name, bool isdir) {
FileSystem::TraversalDir("./cdb", [](const char* name, bool isdir) {
if (isdir)
return;
wchar_t fpath[1024];
myswprintf(fpath, L"./cdb/%ls", name);
if(IsExtension(name, L".cdb")) {
char fpath[1024];
mysnprintf(fpath, "./cdb/%s", name);
if(IsExtension(name, ".cdb")) {
dataManager.LoadDB(fpath);
}
});
#endif // SERVER_PRO2_SUPPORT
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;
}
#ifndef YGOPRO_SERVER_MODE
if (IsExtension(name, L".conf")) {
char upath[1024];
BufferIO::EncodeUTF8(fpath, upath);
dataManager.LoadStrings(upath);
if (IsExtension(name, ".conf")) {
dataManager.LoadStrings(fpath);
return;
}
#endif // YGOPRO_SERVER_MODE
#if defined(SERVER_ZIP_SUPPORT) || !defined(YGOPRO_SERVER_MODE)
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;
}
#endif //SERVER_ZIP_SUPPORT
......@@ -1219,28 +1211,20 @@ void Game::LoadExpansions() {
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;
}
#ifndef YGOPRO_SERVER_MODE
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;
}
......
......@@ -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') {
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
......
......@@ -105,7 +105,6 @@ end
filter "system:windows"
entrypoint "mainCRTStartup"
defines { "_IRR_WCHAR_FILESYSTEM" }
files "ygopro.rc"
if SERVER_PRO2_SUPPORT then
targetname ("AI.Server")
......
......@@ -37,8 +37,5 @@ project "irrlicht"
"source/Irrlicht/CZipReader.cpp"
}
filter { "system:windows" }
defines { "_IRR_WCHAR_FILESYSTEM" }
filter { "system:macosx" }
cppdialect "gnu++14"
......@@ -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