Commit b7e52db7 authored by nanahira's avatar nanahira

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

parents 4672bd84 1d647270
...@@ -35,8 +35,12 @@ void ClientCard::SetCode(unsigned int x) { ...@@ -35,8 +35,12 @@ void ClientCard::SetCode(unsigned int x) {
if((location == LOCATION_HAND) && (code != x)) { if((location == LOCATION_HAND) && (code != x)) {
code = x; code = x;
mainGame->dField.MoveCard(this, 5); mainGame->dField.MoveCard(this, 5);
} else } else {
if (x == 0 && code != 0) {
chain_code = code;
}
code = x; code = x;
}
} }
void ClientCard::UpdateInfo(unsigned char* buf) { void ClientCard::UpdateInfo(unsigned char* buf) {
int flag = BufferIO::Read<int32_t>(buf); int flag = BufferIO::Read<int32_t>(buf);
...@@ -48,11 +52,7 @@ void ClientCard::UpdateInfo(unsigned char* buf) { ...@@ -48,11 +52,7 @@ void ClientCard::UpdateInfo(unsigned char* buf) {
int pdata = BufferIO::Read<int32_t>(buf); int pdata = BufferIO::Read<int32_t>(buf);
if (!pdata) if (!pdata)
ClearData(); ClearData();
if((location == LOCATION_HAND) && ((unsigned int)pdata != code)) { SetCode(pdata);
code = pdata;
mainGame->dField.MoveCard(this, 5);
} else
code = pdata;
} }
if(flag & QUERY_POSITION) { if(flag & QUERY_POSITION) {
int pdata = (BufferIO::Read<int32_t>(buf) >> 24) & 0xff; int pdata = (BufferIO::Read<int32_t>(buf) >> 24) & 0xff;
......
...@@ -73,8 +73,12 @@ extern char** environ; ...@@ -73,8 +73,12 @@ extern char** environ;
#include "../ocgcore/ocgapi.h" #include "../ocgcore/ocgapi.h"
template<size_t N, typename... TR> template<size_t N, typename... TR>
inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) { inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR&&... args) {
return std::swprintf(buf, N, fmt, args...); return std::swprintf(buf, N, fmt, std::forward<TR>(args)...);
}
template<size_t N, typename... TR>
inline int mysnprintf(char(&buf)[N], const char* fmt, TR&&... args) {
return std::snprintf(buf, N, fmt, std::forward<TR>(args)...);
} }
inline FILE* mywfopen(const wchar_t* filename, const char* mode) { inline FILE* mywfopen(const wchar_t* filename, const char* mode) {
......
...@@ -327,7 +327,7 @@ void DataManager::InsertServerList() { ...@@ -327,7 +327,7 @@ void DataManager::InsertServerList() {
} }
bool DataManager::Error(sqlite3* pDB, sqlite3_stmt* pStmt) { bool DataManager::Error(sqlite3* pDB, sqlite3_stmt* pStmt) {
if (const char* msg = sqlite3_errmsg(pDB)) if (const char* msg = sqlite3_errmsg(pDB))
std::snprintf(errmsg, sizeof errmsg, "%s", msg); mysnprintf(errmsg, "%s", msg);
else else
errmsg[0] = '\0'; errmsg[0] = '\0';
sqlite3_finalize(pStmt); sqlite3_finalize(pStmt);
...@@ -565,7 +565,7 @@ unsigned char* DataManager::ScriptReaderEx(const char* script_name, int* slen) { ...@@ -565,7 +565,7 @@ unsigned char* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
} }
unsigned char* DataManager::ScriptReaderExSingle(const char* path, const char* script_name, int* slen, int pre_len, unsigned int use_irr) { unsigned char* DataManager::ScriptReaderExSingle(const char* path, const char* script_name, int* slen, int pre_len, unsigned int use_irr) {
char sname[256]; char sname[256];
std::snprintf(sname, sizeof sname, "%s%s", path, script_name + pre_len); //default script name: ./script/c%d.lua mysnprintf(sname, "%s%s", path, script_name + pre_len); //default script name: ./script/c%d.lua
if (use_irr) { if (use_irr) {
return ReadScriptFromIrrFS(sname, slen); return ReadScriptFromIrrFS(sname, slen);
} }
......
...@@ -215,6 +215,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) { ...@@ -215,6 +215,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame->cbDBDecks->addItem(dname); mainGame->cbDBDecks->addItem(dname);
mainGame->cbDBDecks->setSelected(mainGame->cbDBDecks->getItemCount() - 1); mainGame->cbDBDecks->setSelected(mainGame->cbDBDecks->getItemCount() - 1);
} }
prev_deck = mainGame->cbDBDecks->getSelected();
int catesel = mainGame->cbDBCategory->getSelected(); int catesel = mainGame->cbDBCategory->getSelected();
wchar_t catepath[256]; wchar_t catepath[256];
DeckManager::GetCategoryPath(catepath, catesel, mainGame->cbDBCategory->getText()); DeckManager::GetCategoryPath(catepath, catesel, mainGame->cbDBCategory->getText());
......
...@@ -371,6 +371,7 @@ void Game::DrawCard(ClientCard* pcard) { ...@@ -371,6 +371,7 @@ void Game::DrawCard(ClientCard* pcard) {
if(pcard->aniFrame == 0) { if(pcard->aniFrame == 0) {
pcard->is_moving = false; pcard->is_moving = false;
pcard->is_fading = false; pcard->is_fading = false;
pcard->chain_code = 0;
} }
} }
matManager.mCard.AmbientColor = 0xffffffff; matManager.mCard.AmbientColor = 0xffffffff;
...@@ -378,7 +379,10 @@ void Game::DrawCard(ClientCard* pcard) { ...@@ -378,7 +379,10 @@ void Game::DrawCard(ClientCard* pcard) {
driver->setTransform(irr::video::ETS_WORLD, pcard->mTransform); driver->setTransform(irr::video::ETS_WORLD, pcard->mTransform);
auto m22 = pcard->mTransform(2, 2); auto m22 = pcard->mTransform(2, 2);
if(m22 > -0.99 || pcard->is_moving) { if(m22 > -0.99 || pcard->is_moving) {
matManager.mCard.setTexture(0, imageManager.GetTexture(pcard->code)); auto code = pcard->code;
if (code == 0 && pcard->is_moving)
code = pcard->chain_code;
matManager.mCard.setTexture(0, imageManager.GetTexture(code));
driver->setMaterial(matManager.mCard); driver->setMaterial(matManager.mCard);
driver->drawVertexPrimitiveList(matManager.vCardFront, 4, matManager.iRectangle, 2); driver->drawVertexPrimitiveList(matManager.vCardFront, 4, matManager.iRectangle, 2);
} }
......
...@@ -2084,7 +2084,7 @@ void Game::AddDebugMsg(const char* msg) { ...@@ -2084,7 +2084,7 @@ void Game::AddDebugMsg(const char* msg) {
} }
if (enable_log & 0x2) { if (enable_log & 0x2) {
char msgbuf[1040]; char msgbuf[1040];
std::snprintf(msgbuf, sizeof msgbuf, "[Script Error]: %s", msg); mysnprintf(msgbuf, "[Script Error]: %s", msg);
ErrorLog(msgbuf); ErrorLog(msgbuf);
} }
} }
......
...@@ -333,28 +333,28 @@ irr::video::ITexture* ImageManager::GetTexture(int code, bool fit) { ...@@ -333,28 +333,28 @@ irr::video::ITexture* ImageManager::GetTexture(int code, bool fit) {
irr::video::ITexture *img = nullptr; irr::video::ITexture *img = nullptr;
for(auto ex : mainGame->GetExpansionsListU()) { for(auto ex : mainGame->GetExpansionsListU()) {
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/%d.png", ex.c_str(), code); mysnprintf(file, "%s/pics/%d.png", ex.c_str(), code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/%d.jpg", ex.c_str(), code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/%d.png"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/%d.png"), code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/%d.jpg"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/%d.jpg"), code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/%d.png", code); mysnprintf(file, "pics/%d.png", code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/%d.jpg", code); mysnprintf(file, "pics/%d.jpg", code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr && !mainGame->gameConf.use_image_scale) { if(img == nullptr && !mainGame->gameConf.use_image_scale) {
...@@ -381,11 +381,11 @@ irr::video::ITexture* ImageManager::GetBigPicture(int code, float zoom) { ...@@ -381,11 +381,11 @@ irr::video::ITexture* ImageManager::GetBigPicture(int code, float zoom) {
irr::video::IImage *srcimg = nullptr; irr::video::IImage *srcimg = nullptr;
for(auto ex : mainGame->GetExpansionsListU()) for(auto ex : mainGame->GetExpansionsListU())
if(srcimg == nullptr) { if(srcimg == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/%d.jpg", ex.c_str(), code);
srcimg = driver->createImageFromFile(file); srcimg = driver->createImageFromFile(file);
} }
if(srcimg == nullptr) { if(srcimg == nullptr) {
std::snprintf(file, sizeof file, "pics/%d.jpg", code); mysnprintf(file, "pics/%d.jpg", code);
srcimg = driver->createImageFromFile(file); srcimg = driver->createImageFromFile(file);
} }
if(srcimg == nullptr) { if(srcimg == nullptr) {
...@@ -414,55 +414,55 @@ int ImageManager::LoadThumbThread() { ...@@ -414,55 +414,55 @@ int ImageManager::LoadThumbThread() {
irr::video::IImage *img = nullptr; irr::video::IImage *img = nullptr;
for(auto ex : mainGame->GetExpansionsListU()) { for(auto ex : mainGame->GetExpansionsListU()) {
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/thumbnail/%d.png", ex.c_str(), code); mysnprintf(file, "%s/pics/thumbnail/%d.png", ex.c_str(), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/thumbnail/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/thumbnail/%d.jpg", ex.c_str(), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/thumbnail/%d.png"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/thumbnail/%d.png"), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/thumbnail/%d.jpg"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/thumbnail/%d.jpg"), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/thumbnail/%d.png", code); mysnprintf(file, "pics/thumbnail/%d.png", code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/thumbnail/%d.jpg", code); mysnprintf(file, "pics/thumbnail/%d.jpg", code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr && mainGame->gameConf.use_image_scale) { if(img == nullptr && mainGame->gameConf.use_image_scale) {
for(auto ex : mainGame->GetExpansionsListU()) { for(auto ex : mainGame->GetExpansionsListU()) {
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/%d.png", ex.c_str(), code); mysnprintf(file, "%s/pics/%d.png", ex.c_str(), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/%d.jpg", ex.c_str(), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/%d.png"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/%d.png"), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/%d.jpg"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/%d.jpg"), code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/%d.png", code); mysnprintf(file, "pics/%d.png", code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/%d.jpg", code); mysnprintf(file, "pics/%d.jpg", code);
img = imageManager.driver->createImageFromFile(file); img = imageManager.driver->createImageFromFile(file);
} }
} }
...@@ -511,21 +511,21 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) { ...@@ -511,21 +511,21 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) {
irr::video::ITexture *img = nullptr; irr::video::ITexture *img = nullptr;
for(auto ex : mainGame->GetExpansionsListU()) for(auto ex : mainGame->GetExpansionsListU())
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/thumbnail/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/thumbnail/%d.jpg", ex.c_str(), code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/thumbnail/%d.jpg", code); mysnprintf(file, "pics/thumbnail/%d.jpg", code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr && mainGame->gameConf.use_image_scale) { if(img == nullptr && mainGame->gameConf.use_image_scale) {
for(auto ex : mainGame->GetExpansionsListU()) for(auto ex : mainGame->GetExpansionsListU())
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/%d.jpg", ex.c_str(), code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/%d.jpg", code); mysnprintf(file, "pics/%d.jpg", code);
img = GetTextureFromFile(file, width, height); img = GetTextureFromFile(file, width, height);
} }
} }
...@@ -538,7 +538,7 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) { ...@@ -538,7 +538,7 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) {
if(lit != tThumbLoading.end()) { if(lit != tThumbLoading.end()) {
if(lit->second != nullptr) { if(lit->second != nullptr) {
char file[256]; char file[256];
std::snprintf(file, sizeof file, "pics/thumbnail/%d.jpg", code); mysnprintf(file, "pics/thumbnail/%d.jpg", code);
irr::video::ITexture* texture = driver->addTexture(file, lit->second); // textures must be added in the main thread due to OpenGL irr::video::ITexture* texture = driver->addTexture(file, lit->second); // textures must be added in the main thread due to OpenGL
lit->second->drop(); lit->second->drop();
tThumb[code] = texture; tThumb[code] = texture;
...@@ -572,28 +572,28 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) { ...@@ -572,28 +572,28 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) {
irr::video::ITexture* img = nullptr; irr::video::ITexture* img = nullptr;
for(auto ex : mainGame->GetExpansionsListU()) { for(auto ex : mainGame->GetExpansionsListU()) {
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/field/%d.png", ex.c_str(), code); mysnprintf(file, "%s/pics/field/%d.png", ex.c_str(), code);
irr::video::ITexture* img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); irr::video::ITexture* img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/field/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/field/%d.jpg", ex.c_str(), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/field/%d.png"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/field/%d.png"), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/field/%d.jpg"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/field/%d.jpg"), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/field/%d.png", code); mysnprintf(file, "pics/field/%d.png", code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/field/%d.jpg", code); mysnprintf(file, "pics/field/%d.jpg", code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
if(img == nullptr) { if(img == nullptr) {
tFields[code] = nullptr; tFields[code] = nullptr;
...@@ -621,28 +621,28 @@ irr::video::ITexture* ImageManager::GetTextureField(int code) { ...@@ -621,28 +621,28 @@ irr::video::ITexture* ImageManager::GetTextureField(int code) {
irr::video::ITexture *img = nullptr; irr::video::ITexture *img = nullptr;
for(auto ex : mainGame->GetExpansionsListU()) { for(auto ex : mainGame->GetExpansionsListU()) {
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/field/%d.png", ex.c_str(), code); mysnprintf(file, "%s/pics/field/%d.png", ex.c_str(), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "%s/pics/field/%d.jpg", ex.c_str(), code); mysnprintf(file, "%s/pics/field/%d.jpg", ex.c_str(), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/field/%d.png"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/field/%d.png"), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, mainGame->GetLocaleDir("pics/field/%d.jpg"), code); mysnprintf(file, mainGame->GetLocaleDir("pics/field/%d.jpg"), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/field/%d.png", code); mysnprintf(file, "pics/field/%d.png", code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == nullptr) { if(img == nullptr) {
std::snprintf(file, sizeof file, "pics/field/%d.jpg", code); mysnprintf(file, "pics/field/%d.jpg", code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
if(img == nullptr) { if(img == nullptr) {
tFields[code] = nullptr; tFields[code] = nullptr;
......
...@@ -365,9 +365,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -365,9 +365,9 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
int flag = 0; int flag = 0;
flag += (mainGame->chkBotHand->isChecked() ? 0x1 : 0); flag += (mainGame->chkBotHand->isChecked() ? 0x1 : 0);
char arg2[8]; char arg2[8];
std::snprintf(arg2, sizeof arg2, "%d", flag); mysnprintf(arg2, "%d", flag);
char arg3[8]; char arg3[8];
std::snprintf(arg3, sizeof arg3, "%d", mainGame->gameConf.serverport); mysnprintf(arg3, "%d", mainGame->gameConf.serverport);
execl("./bot", "bot", arg1, arg2, arg3, nullptr); execl("./bot", "bot", arg1, arg2, arg3, nullptr);
std::exit(0); std::exit(0);
} else { } else {
......
...@@ -182,7 +182,7 @@ public: ...@@ -182,7 +182,7 @@ public:
bool success = true; bool success = true;
TraversalDir(dir, [dir, &success](const char *name, bool isdir) { TraversalDir(dir, [dir, &success](const char *name, bool isdir) {
char full_path[1024]; char full_path[1024];
int len = std::snprintf(full_path, sizeof full_path, "%s/%s", dir, name); int len = mysnprintf(full_path, "%s/%s", dir, name);
if (len < 0 || len >= (int)(sizeof full_path)) { if (len < 0 || len >= (int)(sizeof full_path)) {
success = false; success = false;
return; return;
...@@ -228,7 +228,7 @@ public: ...@@ -228,7 +228,7 @@ public:
while((dirp = readdir(dir)) != nullptr) { while((dirp = readdir(dir)) != nullptr) {
file_unit funit; file_unit funit;
char fname[1024]; char fname[1024];
int len = std::snprintf(fname, sizeof fname, "%s/%s", path, dirp->d_name); int len = mysnprintf(fname, "%s/%s", path, dirp->d_name);
if (len < 0 || len >= (int)(sizeof fname)) if (len < 0 || len >= (int)(sizeof fname))
continue; continue;
stat(fname, &fileStat); stat(fname, &fileStat);
......
...@@ -30,7 +30,7 @@ project "YGOPro" ...@@ -30,7 +30,7 @@ project "YGOPro"
end end
if BUILD_FREETYPE then if BUILD_FREETYPE then
includedirs { "../freetype/include" } includedirs { "../freetype/custom", "../freetype/include" }
else else
includedirs { FREETYPE_INCLUDE_DIR } includedirs { FREETYPE_INCLUDE_DIR }
libdirs { FREETYPE_LIB_DIR } libdirs { FREETYPE_LIB_DIR }
......
...@@ -140,17 +140,12 @@ bool Replay::RenameReplay(const wchar_t* oldname, const wchar_t* newname) { ...@@ -140,17 +140,12 @@ bool Replay::RenameReplay(const wchar_t* oldname, const wchar_t* newname) {
wchar_t newfname[256]; wchar_t newfname[256];
myswprintf(oldfname, L"./replay/%ls", oldname); myswprintf(oldfname, L"./replay/%ls", oldname);
myswprintf(newfname, L"./replay/%ls", newname); myswprintf(newfname, L"./replay/%ls", newname);
#ifdef _WIN32 char oldfilefn[1024];
BOOL result = MoveFileW(oldfname, newfname); char newfilefn[1024];
return !!result;
#else
char oldfilefn[256];
char newfilefn[256];
BufferIO::EncodeUTF8(oldfname, oldfilefn); BufferIO::EncodeUTF8(oldfname, oldfilefn);
BufferIO::EncodeUTF8(newfname, newfilefn); BufferIO::EncodeUTF8(newfname, newfilefn);
int result = rename(oldfilefn, newfilefn); int result = std::rename(oldfilefn, newfilefn);
return result == 0; return result == 0;
#endif
} }
bool Replay::ReadNextResponse(unsigned char resp[]) { bool Replay::ReadNextResponse(unsigned char resp[]) {
unsigned char len{}; unsigned char len{};
......
...@@ -228,7 +228,7 @@ bool ReplayMode::StartDuel() { ...@@ -228,7 +228,7 @@ bool ReplayMode::StartDuel() {
} }
} else { } else {
char filename[256]{}; char filename[256]{};
std::snprintf(filename, sizeof filename, "./single/%s", cur_replay.script_name.c_str()); mysnprintf(filename, "./single/%s", cur_replay.script_name.c_str());
if(!preload_script(pduel, filename)) { if(!preload_script(pduel, filename)) {
return false; return false;
} }
......
Subproject commit d2d3e31e382d71b460cd7f3842b4d332f3d5446c Subproject commit 0c4898b2d1da022aff1fcf766d87336327aebeaf
...@@ -10,9 +10,6 @@ project "event" ...@@ -10,9 +10,6 @@ project "event"
if EVENT_VERSION>=0x02020000 then if EVENT_VERSION>=0x02020000 then
print("Warning: Using libevent version 2.2.x is not supported, please use 2.1.x, otherwise you may encounter issues.") print("Warning: Using libevent version 2.2.x is not supported, please use 2.1.x, otherwise you may encounter issues.")
end end
if EVENT_VERSION>=0x02010000 and WINXP_SUPPORT then
print("Warning: libevent 2.1 uses some new APIs which require Windows Vista or later, so WinXP support will be invalid.")
end
includedirs { "include", "compat" } includedirs { "include", "compat" }
......
/* /*
* This file registers the FreeType modules compiled into the library. * This file registers the FreeType modules compiled into the library.
* *
* YGOPro only uses modules that are needed for TrueType fonts. * YGOPro only uses modules that are needed for TrueType and OpenType fonts.
* *
*/ */
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* User-selectable configuration macros (specification only). * User-selectable configuration macros (specification only).
* *
* This file is customized for YGOPro to include only the necessary * This file is customized for YGOPro to include only the necessary
* configuration options for the TrueType font driver. * configuration options for the TrueType and OpenType font driver.
* *
* See the original FreeType source code for more information. * See the original FreeType source code for more information.
* /include/freetype/config/ftoption.h * /include/freetype/config/ftoption.h
......
...@@ -11,5 +11,6 @@ if not SERVER_PRO3_SUPPORT then ...@@ -11,5 +11,6 @@ if not SERVER_PRO3_SUPPORT then
"SQLITE_OMIT_DEPRECATED", "SQLITE_OMIT_DEPRECATED",
"SQLITE_OMIT_PROGRESS_CALLBACK", "SQLITE_OMIT_PROGRESS_CALLBACK",
"SQLITE_OMIT_SHARED_CACHE", "SQLITE_OMIT_SHARED_CACHE",
"SQLITE_TRUSTED_SCHEMA=0",
} }
end end
...@@ -83,7 +83,6 @@ newoption { trigger = "irrklang-pro-release-lib-dir", category = "YGOPro - irrkl ...@@ -83,7 +83,6 @@ newoption { trigger = "irrklang-pro-release-lib-dir", category = "YGOPro - irrkl
newoption { trigger = "irrklang-pro-debug-lib-dir", category = "YGOPro - irrklang - pro", description = "", value = "PATH" } newoption { trigger = "irrklang-pro-debug-lib-dir", category = "YGOPro - irrklang - pro", description = "", value = "PATH" }
newoption { trigger = 'build-ikpmp3', category = "YGOPro - irrklang - ikpmp3", description = "" } newoption { trigger = 'build-ikpmp3', category = "YGOPro - irrklang - ikpmp3", description = "" }
newoption { trigger = "winxp-support", category = "YGOPro", description = "" }
newoption { trigger = "mac-arm", category = "YGOPro", description = "Compile for Apple Silicon Mac" } newoption { trigger = "mac-arm", category = "YGOPro", description = "Compile for Apple Silicon Mac" }
newoption { trigger = "mac-intel", category = "YGOPro", description = "Compile for Intel Mac" } newoption { trigger = "mac-intel", category = "YGOPro", description = "Compile for Intel Mac" }
...@@ -295,10 +294,6 @@ if USE_AUDIO then ...@@ -295,10 +294,6 @@ if USE_AUDIO then
end end
end end
if GetParam("winxp-support") and os.istarget("windows") then
WINXP_SUPPORT = true
end
IS_ARM=false IS_ARM=false
function spawn(cmd) function spawn(cmd)
...@@ -395,12 +390,7 @@ workspace "YGOPro" ...@@ -395,12 +390,7 @@ workspace "YGOPro"
filter "system:windows" filter "system:windows"
systemversion "latest" systemversion "latest"
startproject "YGOPro" startproject "YGOPro"
if WINXP_SUPPORT then defines { "WINVER=0x0601" } -- WIN7
defines { "WINVER=0x0501" }
toolset "v141_xp"
else
defines { "WINVER=0x0601" } -- WIN7
end
platforms { "Win32", "x64" } platforms { "Win32", "x64" }
filter { "system:windows", "platforms:Win32" } filter { "system:windows", "platforms:Win32" }
...@@ -458,9 +448,7 @@ workspace "YGOPro" ...@@ -458,9 +448,7 @@ workspace "YGOPro"
filter "action:vs*" filter "action:vs*"
cdialect "C11" cdialect "C11"
if not WINXP_SUPPORT then conformancemode "On"
conformancemode "On"
end
vectorextensions "SSE2" vectorextensions "SSE2"
buildoptions { "/utf-8" } buildoptions { "/utf-8" }
defines { "_CRT_SECURE_NO_WARNINGS" } defines { "_CRT_SECURE_NO_WARNINGS" }
......
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