diff --git a/gframe/client_field.cpp b/gframe/client_field.cpp index e298b33e4..7a8ea493e 100644 --- a/gframe/client_field.cpp +++ b/gframe/client_field.cpp @@ -459,7 +459,8 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); if(selectable_cards[i]->overlayTarget->controler) mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0); - else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff); + else + mainGame->stCardPos[i]->setBackgroundColor(0xffffffff); } else if(selectable_cards[i]->location == LOCATION_DECK || selectable_cards[i]->location == LOCATION_EXTRA || selectable_cards[i]->location == LOCATION_REMOVED) { if(selectable_cards[i]->position & POS_FACEDOWN) mainGame->stCardPos[i]->setOverrideColor(0xff0000ff); @@ -479,7 +480,8 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) { wchar_t formatBuffer[2048]; myswprintf(formatBuffer, L"%d", sort_list[i]); mainGame->stCardPos[i]->setText(formatBuffer); - } else mainGame->stCardPos[i]->setText(L""); + } else + mainGame->stCardPos[i]->setText(L""); mainGame->stCardPos[i]->setBackgroundColor(0xffffffff); } mainGame->stCardPos[i]->setVisible(true); diff --git a/gframe/event_handler.cpp b/gframe/event_handler.cpp index b000371de..7fb07eb48 100644 --- a/gframe/event_handler.cpp +++ b/gframe/event_handler.cpp @@ -897,8 +897,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) { mainGame->btnCardSelect[i]->setRelativePosition(rect(30 + i * 125, 55, 30 + 120 + i * 125, 225)); // text wchar_t formatBuffer[2048]; - if(sort_list.size()) { - if(sort_list[pos + i] > 0) + if(mainGame->dInfo.curMsg == MSG_SORT_CARD) { + if(sort_list[pos + i]) myswprintf(formatBuffer, L"%d", sort_list[pos + i]); else myswprintf(formatBuffer, L""); @@ -2651,6 +2651,7 @@ void ClientField::CancelOrFinish() { if(mainGame->wCardSelect->isVisible()) { DuelClient::SetResponseI(-1); mainGame->HideElement(mainGame->wCardSelect, true); + sort_list.clear(); } break; } diff --git a/gframe/game.cpp b/gframe/game.cpp index c6fadab56..552e764f6 100644 --- a/gframe/game.cpp +++ b/gframe/game.cpp @@ -94,14 +94,70 @@ bool Game::Initialize() { dataManager.LoadStrings("./expansions/strings.conf"); env = device->getGUIEnvironment(); numFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.numfont, 16); - adFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.numfont, 12); - lpcFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.numfont, 48); - guiFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.textfont, gameConf.textfontsize); + if(!numFont) { + const wchar_t* numFontPaths[] = { + L"C:/Windows/Fonts/arialbd.ttf", + L"/usr/share/fonts/truetype/DroidSansFallbackFull.ttf", + L"/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc", + L"/usr/share/fonts/google-noto-cjk/NotoSansCJK-Bold.ttc", + L"/System/Library/Fonts/SFNSTextCondensed-Bold.otf", + L"/System/Library/Fonts/SFNS.ttf", + L"./fonts/numFont.ttf", + L"./fonts/numFont.ttc", + L"./fonts/numFont.otf" + }; + for(const wchar_t* path : numFontPaths) { + myswprintf(gameConf.numfont, path); + numFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.numfont, 16); + if(numFont) + break; + } + } textFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.textfont, gameConf.textfontsize); + if(!textFont) { + const wchar_t* textFontPaths[] = { + L"C:/Windows/Fonts/msyh.ttc", + L"C:/Windows/Fonts/msyh.ttf", + L"C:/Windows/Fonts/simsun.ttc", + L"/usr/share/fonts/truetype/DroidSansFallbackFull.ttf", + L"/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc", + L"/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc", + L"/System/Library/Fonts/PingFang.ttc", + L"./fonts/textFont.ttf", + L"./fonts/textFont.ttc", + L"./fonts/textFont.otf" + }; + for(const wchar_t* path : textFontPaths) { + myswprintf(gameConf.textfont, path); + textFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.textfont, gameConf.textfontsize); + if(textFont) + break; + } + } if(!numFont || !textFont) { - ErrorLog("Failed to load font(s)!"); - return false; + wchar_t fpath[1024]; + fpath[0] = 0; + FileSystem::TraversalDir(L"./fonts", [&fpath](const wchar_t* name, bool isdir) { + if(!isdir && wcsrchr(name, '.') && (!mywcsncasecmp(wcsrchr(name, '.'), L".ttf", 4) || !mywcsncasecmp(wcsrchr(name, '.'), L".ttc", 4) || !mywcsncasecmp(wcsrchr(name, '.'), L".otf", 4))) { + myswprintf(fpath, L"./fonts/%ls", name); + } + }); + if(fpath[0] == 0) { + ErrorLog("Failed to load font(s)!"); + return false; + } + if(!numFont) { + myswprintf(gameConf.numfont, fpath); + numFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.numfont, 16); + } + if(!textFont) { + myswprintf(gameConf.textfont, fpath); + textFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.textfont, gameConf.textfontsize); + } } + adFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.numfont, 12); + lpcFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.numfont, 48); + guiFont = irr::gui::CGUITTFont::createTTFont(env, gameConf.textfont, gameConf.textfontsize); smgr = device->getSceneManager(); device->setWindowCaption(L"KoishiPro"); device->setResizable(true); @@ -854,7 +910,6 @@ bool Game::Initialize() { stCardListTip->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); stCardListTip->setVisible(false); device->setEventReceiver(&menuHandler); - LoadConfig(); if(!soundManager.Init()) { chkEnableSound->setChecked(false); chkEnableSound->setEnabled(false); @@ -1251,7 +1306,7 @@ bool Game::LoadConfigFromFile(const char* file) { enable_log = atoi(valbuf); } else if(!strcmp(strbuf, "textfont")) { BufferIO::DecodeUTF8(valbuf, wstr); - int textfontsize; + int textfontsize = gameConf.textfontsize; sscanf(linebuf, "%s = %s %d", strbuf, valbuf, &textfontsize); gameConf.textfontsize = textfontsize; BufferIO::CopyWStr(wstr, gameConf.textfont, 256); @@ -1374,7 +1429,7 @@ void Game::LoadConfig() { gameConf.use_image_scale = 1; gameConf.antialias = 0; gameConf.serverport = 7911; - gameConf.textfontsize = 12; + gameConf.textfontsize = 14; gameConf.nickname[0] = 0; gameConf.gamename[0] = 0; gameConf.bot_deck_path[0] = 0; diff --git a/strings.conf b/strings.conf index 506715002..4c2f95b0e 100644 --- a/strings.conf +++ b/strings.conf @@ -633,6 +633,8 @@ !counter 0x56 炎星指示物 !counter 0x57 幻魔指示物 !counter 0x58 指示物(祢须三破鸣比) +!counter 0x59 落魂指示物 +!counter 0x5a 指示物(岩战之试炼) #setnames, using tab for comment !setname 0x1 正义盟军 A・O・J !setname 0x2 次世代 ジェネクス @@ -808,7 +810,9 @@ !setname 0x7c 炎舞 !setname 0x7d 阳炎 ヘイズ !setname 0x107d 阳炎兽 陽炎獣 -!setname 0x7e 异热同心武器 ZW(ゼアル・ウェポン) +!setname 0x7e 异热同心 ゼアル +!setname 0x107e 异热同心武器 ZW(ゼアル・ウェポン) +!setname 0x207e 异热同心从者 ZS(ゼアル・サーバス) !setname 0x7f 霍普 ホープ !setname 0x107f 希望皇 霍普 希望皇ホープ !setname 0x207f 未来皇 霍普 未来皇ホープ @@ -1085,3 +1089,9 @@ !setname 0x2158 圣天树 サンアバロン !setname 0x159 圣夜骑士 ホーリーナイツ !setname 0x15a 人偶怪兽 ドール・モンスター +!setname 0x15b 惊乐 アメイズメント +!setname 0x15c 游乐设施 アトラクション +!setname 0x15d 烙印 +!setname 0x15e 降阶魔法 RDM +!setname 0x15f 岩战 War Rock +!setname 0x160 源质兽 Materiactor