Commit 019ae3d8 authored by mercury233's avatar mercury233
parents 97e76d4e c07b9172
...@@ -31,4 +31,3 @@ ...@@ -31,4 +31,3 @@
* 初始手牌数 * 初始手牌数
* 每回合抽卡 * 每回合抽卡
* 每回合时间 * 每回合时间
...@@ -186,7 +186,7 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se ...@@ -186,7 +186,7 @@ void ClientField::AddCard(ClientCard* pcard, int controler, int location, int se
case LOCATION_EXTRA: { case LOCATION_EXTRA: {
extra[controler].push_back(pcard); extra[controler].push_back(pcard);
pcard->sequence = extra[controler].size() - 1; pcard->sequence = extra[controler].size() - 1;
if ((pcard->type & TYPE_PENDULUM) && (pcard->position & POS_FACEUP)) if (pcard->position & POS_FACEUP)
extra_p_count[controler]++; extra_p_count[controler]++;
break; break;
} }
...@@ -256,7 +256,7 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) { ...@@ -256,7 +256,7 @@ ClientCard* ClientField::RemoveCard(int controler, int location, int sequence) {
extra[controler][i]->mTransform.setTranslation(extra[controler][i]->curPos); extra[controler][i]->mTransform.setTranslation(extra[controler][i]->curPos);
} }
extra[controler].erase(extra[controler].end() - 1); extra[controler].erase(extra[controler].end() - 1);
if ((pcard->type & TYPE_PENDULUM) && (pcard->position & POS_FACEUP)) if (pcard->position & POS_FACEUP)
extra_p_count[controler]--; extra_p_count[controler]--;
break; break;
} }
......
...@@ -118,6 +118,7 @@ public: ...@@ -118,6 +118,7 @@ public:
virtual bool OnEvent(const irr::SEvent& event); virtual bool OnEvent(const irr::SEvent& event);
void GetHoverField(int x, int y); void GetHoverField(int x, int y);
void ShowMenu(int flag, int x, int y); void ShowMenu(int flag, int x, int y);
void SetResponseSelectedCards() const;
}; };
} }
......
...@@ -102,6 +102,12 @@ bool DataManager::LoadStrings(const char* file) { ...@@ -102,6 +102,12 @@ bool DataManager::LoadStrings(const char* file) {
wchar_t* pbuf = new wchar_t[len + 1]; wchar_t* pbuf = new wchar_t[len + 1];
wcscpy(pbuf, strBuffer); wcscpy(pbuf, strBuffer);
_counterStrings[value] = pbuf; _counterStrings[value] = pbuf;
} else if(!strcmp(strbuf, "setname")) {
sscanf(&linebuf[8], "%x %240[^\t\n]", &value, strbuf);//using tab for comment
int len = BufferIO::DecodeUTF8(strbuf, strBuffer);
wchar_t* pbuf = new wchar_t[len + 1];
wcscpy(pbuf, strBuffer);
_setnameStrings[value] = pbuf;
} }
} }
fclose(fp); fclose(fp);
...@@ -182,6 +188,18 @@ const wchar_t* DataManager::GetCounterName(int code) { ...@@ -182,6 +188,18 @@ const wchar_t* DataManager::GetCounterName(int code) {
return unknown_string; return unknown_string;
return csit->second; return csit->second;
} }
const wchar_t* DataManager::GetSetName(int code) {
auto csit = _setnameStrings.find(code);
if(csit == _setnameStrings.end())
return NULL;
return csit->second;
}
unsigned int DataManager::GetSetCode(const wchar_t* setname) {
for(auto csit = _setnameStrings.begin(); csit != _setnameStrings.end(); ++csit)
if(wcscmp(csit->second, setname) == 0)
return csit->first;
return 0;
}
const wchar_t* DataManager::GetNumString(int num, bool bracket) { const wchar_t* DataManager::GetNumString(int num, bool bracket) {
if(!bracket) if(!bracket)
return numStrings[num]; return numStrings[num];
...@@ -259,6 +277,22 @@ const wchar_t* DataManager::FormatType(int type) { ...@@ -259,6 +277,22 @@ const wchar_t* DataManager::FormatType(int type) {
return unknown_string; return unknown_string;
return tpBuffer; return tpBuffer;
} }
const wchar_t* DataManager::FormatSetName(unsigned long long setcode) {
wchar_t* p = scBuffer;
for(int i = 0; i < 4; ++i) {
const wchar_t* setname = GetSetName((setcode >> i * 16) & 0xffff);
if(setname) {
BufferIO::CopyWStrRef(setname, p, 16);
*p = L'|';
*++p = 0;
}
}
if(p != scBuffer)
*(p - 1) = 0;
else
return unknown_string;
return scBuffer;
}
int DataManager::CardReader(int code, void* pData) { int DataManager::CardReader(int code, void* pData) {
if(!dataManager.GetData(code, (CardData*)pData)) if(!dataManager.GetData(code, (CardData*)pData))
memset(pData, 0, sizeof(CardData)); memset(pData, 0, sizeof(CardData));
......
...@@ -23,16 +23,20 @@ public: ...@@ -23,16 +23,20 @@ public:
const wchar_t* GetSysString(int code); const wchar_t* GetSysString(int code);
const wchar_t* GetVictoryString(int code); const wchar_t* GetVictoryString(int code);
const wchar_t* GetCounterName(int code); const wchar_t* GetCounterName(int code);
const wchar_t* GetSetName(int code);
unsigned int GetSetCode(const wchar_t* setname);
const wchar_t* GetNumString(int num, bool bracket = false); const wchar_t* GetNumString(int num, bool bracket = false);
const wchar_t* FormatLocation(int location, int sequence); const wchar_t* FormatLocation(int location, int sequence);
const wchar_t* FormatAttribute(int attribute); const wchar_t* FormatAttribute(int attribute);
const wchar_t* FormatRace(int race); const wchar_t* FormatRace(int race);
const wchar_t* FormatType(int type); const wchar_t* FormatType(int type);
const wchar_t* FormatSetName(unsigned long long setcode);
std::unordered_map<unsigned int, CardDataC> _datas; std::unordered_map<unsigned int, CardDataC> _datas;
std::unordered_map<unsigned int, CardString> _strings; std::unordered_map<unsigned int, CardString> _strings;
std::unordered_map<unsigned int, wchar_t*> _counterStrings; std::unordered_map<unsigned int, wchar_t*> _counterStrings;
std::unordered_map<unsigned int, wchar_t*> _victoryStrings; std::unordered_map<unsigned int, wchar_t*> _victoryStrings;
std::unordered_map<unsigned int, wchar_t*> _setnameStrings;
wchar_t* _sysStrings[2048]; wchar_t* _sysStrings[2048];
wchar_t numStrings[256][4]; wchar_t numStrings[256][4];
...@@ -40,6 +44,7 @@ public: ...@@ -40,6 +44,7 @@ public:
wchar_t attBuffer[128]; wchar_t attBuffer[128];
wchar_t racBuffer[128]; wchar_t racBuffer[128];
wchar_t tpBuffer[128]; wchar_t tpBuffer[128];
wchar_t scBuffer[128];
static wchar_t strBuffer[2048]; static wchar_t strBuffer[2048];
static const wchar_t* unknown_string; static const wchar_t* unknown_string;
......
...@@ -657,7 +657,10 @@ void DeckBuilder::FilterCards() { ...@@ -657,7 +657,10 @@ void DeckBuilder::FilterCards() {
myswprintf(result_string, L"%d", results.size()); myswprintf(result_string, L"%d", results.size());
return; return;
} }
if(pstr[0] == 0 || (pstr[0] == L'$' && pstr[1] == 0)) unsigned int set_code = 0;
if(pstr[0] == L'@')
set_code = dataManager.GetSetCode(&pstr[1]);
if(pstr[0] == 0 || (pstr[0] == L'$' && pstr[1] == 0) || (pstr[0] == L'@' && pstr[1] == 0))
pstr = 0; pstr = 0;
auto strpointer = dataManager._strings.begin(); auto strpointer = dataManager._strings.begin();
for(code_pointer ptr = dataManager._datas.begin(); ptr != dataManager._datas.end(); ++ptr, ++strpointer) { for(code_pointer ptr = dataManager._datas.begin(); ptr != dataManager._datas.end(); ++ptr, ++strpointer) {
...@@ -723,8 +726,23 @@ void DeckBuilder::FilterCards() { ...@@ -723,8 +726,23 @@ void DeckBuilder::FilterCards() {
if(pstr[0] == L'$') { if(pstr[0] == L'$') {
if(wcsstr(text.name, &pstr[1]) == 0) if(wcsstr(text.name, &pstr[1]) == 0)
continue; continue;
} } else if(pstr[0] == L'@' && set_code) {
else { unsigned long long sc = data.setcode;
if(data.alias) {
auto aptr = dataManager._datas.find(data.alias);
if(aptr != dataManager._datas.end())
sc = aptr->second.setcode;
}
bool res = false;
int settype = set_code & 0xfff;
int setsubtype = set_code & 0xf000;
while(sc) {
if ((sc & 0xfff) == settype && (sc & 0xf000 & setsubtype) == setsubtype)
res = true;
sc = sc >> 16;
}
if(!res) continue;
} else {
if(wcsstr(text.name, pstr) == 0 && wcsstr(text.text, pstr) == 0) if(wcsstr(text.name, pstr) == 0 && wcsstr(text.text, pstr) == 0)
continue; continue;
} }
......
...@@ -168,11 +168,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -168,11 +168,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case MSG_SELECT_CARD: case MSG_SELECT_CARD:
case MSG_SELECT_TRIBUTE: case MSG_SELECT_TRIBUTE:
case MSG_SELECT_SUM: { case MSG_SELECT_SUM: {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
mainGame->HideElement(mainGame->wQuery, true); mainGame->HideElement(mainGame->wQuery, true);
break; break;
} }
...@@ -566,11 +562,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -566,11 +562,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
int sel = selected_cards.size(); int sel = selected_cards.size();
if (sel >= select_max) { if (sel >= select_max) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
mainGame->HideElement(mainGame->wCardSelect, true); mainGame->HideElement(mainGame->wCardSelect, true);
} else if (sel >= select_min) { } else if (sel >= select_min) {
select_ready = true; select_ready = true;
...@@ -585,11 +577,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -585,11 +577,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10]; command_card = selectable_cards[id - BUTTON_CARD_0 + mainGame->scrCardList->getPos() / 10];
selected_cards.push_back(command_card); selected_cards.push_back(command_card);
if (CheckSelectSum()) { if (CheckSelectSum()) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
mainGame->HideElement(mainGame->wCardSelect, true); mainGame->HideElement(mainGame->wCardSelect, true);
} else { } else {
mainGame->wCardSelect->setVisible(false); mainGame->wCardSelect->setVisible(false);
...@@ -642,11 +630,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -642,11 +630,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
if(mainGame->dInfo.curMsg == MSG_SELECT_CARD) { if(mainGame->dInfo.curMsg == MSG_SELECT_CARD) {
if(select_ready) { if(select_ready) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
mainGame->HideElement(mainGame->wCardSelect, true); mainGame->HideElement(mainGame->wCardSelect, true);
} }
break; break;
...@@ -917,6 +901,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -917,6 +901,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L""); mainGame->stName->setText(L"");
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false); mainGame->scrCardText->setVisible(false);
} }
...@@ -931,6 +916,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -931,6 +916,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L""); mainGame->stName->setText(L"");
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false); mainGame->scrCardText->setVisible(false);
} }
...@@ -1226,19 +1212,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1226,19 +1212,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
max += selected_cards[i]->opParam; max += selected_cards[i]->opParam;
} }
if (min >= select_max) { if (min >= select_max) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
DuelClient::SendResponse(); DuelClient::SendResponse();
} else if (max >= select_min) { } else if (max >= select_min) {
if(selected_cards.size() == selectable_cards.size()) { if(selected_cards.size() == selectable_cards.size()) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
DuelClient::SendResponse(); DuelClient::SendResponse();
} else { } else {
select_ready = true; select_ready = true;
...@@ -1289,11 +1267,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1289,11 +1267,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
else break; else break;
if (CheckSelectSum()) { if (CheckSelectSum()) {
if(selectsum_cards.size() == 0 || selectable_cards.size() == 0) { if(selectsum_cards.size() == 0 || selectable_cards.size() == 0) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
DuelClient::SendResponse(); DuelClient::SendResponse();
} else { } else {
select_ready = true; select_ready = true;
...@@ -1363,20 +1337,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1363,20 +1337,12 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break; break;
} }
if(mainGame->wQuery->isVisible()) { if(mainGame->wQuery->isVisible()) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
mainGame->HideElement(mainGame->wQuery, true); mainGame->HideElement(mainGame->wQuery, true);
break; break;
} }
if(select_ready) { if(select_ready) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
if(mainGame->wCardSelect->isVisible()) if(mainGame->wCardSelect->isVisible())
mainGame->HideElement(mainGame->wCardSelect, true); mainGame->HideElement(mainGame->wCardSelect, true);
else else
...@@ -1396,11 +1362,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1396,11 +1362,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break; break;
} }
if(mainGame->wQuery->isVisible()) { if(mainGame->wQuery->isVisible()) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
mainGame->HideElement(mainGame->wQuery, true); mainGame->HideElement(mainGame->wQuery, true);
break; break;
} }
...@@ -1408,11 +1370,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1408,11 +1370,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} }
case MSG_SELECT_SUM: { case MSG_SELECT_SUM: {
if(mainGame->wQuery->isVisible()) { if(mainGame->wQuery->isVisible()) {
unsigned char respbuf[64]; SetResponseSelectedCards();
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
mainGame->HideElement(mainGame->wQuery, true); mainGame->HideElement(mainGame->wQuery, true);
break; break;
} }
...@@ -1603,6 +1561,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -1603,6 +1561,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L""); mainGame->stName->setText(L"");
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false); mainGame->scrCardText->setVisible(false);
} }
...@@ -1935,4 +1894,12 @@ void ClientField::ShowMenu(int flag, int x, int y) { ...@@ -1935,4 +1894,12 @@ void ClientField::ShowMenu(int flag, int x, int y) {
mainGame->wCmdMenu->setVisible(true); mainGame->wCmdMenu->setVisible(true);
mainGame->wCmdMenu->setRelativePosition(irr::core::recti(x - 20 , y - 20 - height, x + 80, y - 20)); mainGame->wCmdMenu->setRelativePosition(irr::core::recti(x - 20 , y - 20 - height, x + 80, y - 20));
} }
void ClientField::SetResponseSelectedCards() const {
unsigned char respbuf[64];
respbuf[0] = selected_cards.size();
for (size_t i = 0; i < selected_cards.size(); ++i)
respbuf[i + 1] = selected_cards[i]->select_seq;
DuelClient::SetResponseB(respbuf, selected_cards.size() + 1);
}
} }
...@@ -292,8 +292,10 @@ bool Game::Initialize() { ...@@ -292,8 +292,10 @@ bool Game::Initialize() {
stInfo->setOverrideColor(SColor(255, 0, 0, 255)); stInfo->setOverrideColor(SColor(255, 0, 0, 255));
stDataInfo = env->addStaticText(L"", rect<s32>(15, 60, 296, 83), false, true, tabInfo, -1, false); stDataInfo = env->addStaticText(L"", rect<s32>(15, 60, 296, 83), false, true, tabInfo, -1, false);
stDataInfo->setOverrideColor(SColor(255, 0, 0, 255)); stDataInfo->setOverrideColor(SColor(255, 0, 0, 255));
stText = env->addStaticText(L"", rect<s32>(15, 83, 287, 324), false, true, tabInfo, -1, false); stSetName = env->addStaticText(L"", rect<s32>(15, 83, 296, 106), false, true, tabInfo, -1, false);
scrCardText = env->addScrollBar(false, rect<s32>(267, 83, 287, 324), tabInfo, SCROLL_CARDTEXT); stSetName->setOverrideColor(SColor(255, 0, 0, 255));
stText = env->addStaticText(L"", rect<s32>(15, 106, 287, 324), false, true, tabInfo, -1, false);
scrCardText = env->addScrollBar(false, rect<s32>(267, 106, 287, 324), tabInfo, SCROLL_CARDTEXT);
scrCardText->setLargeStep(1); scrCardText->setLargeStep(1);
scrCardText->setSmallStep(1); scrCardText->setSmallStep(1);
scrCardText->setVisible(false); scrCardText->setVisible(false);
...@@ -305,13 +307,19 @@ bool Game::Initialize() { ...@@ -305,13 +307,19 @@ bool Game::Initialize() {
//system //system
irr::gui::IGUITab* tabSystem = wInfos->addTab(dataManager.GetSysString(1273)); irr::gui::IGUITab* tabSystem = wInfos->addTab(dataManager.GetSysString(1273));
chkAutoPos = env->addCheckBox(false, rect<s32>(20, 20, 280, 45), tabSystem, -1, dataManager.GetSysString(1274)); chkAutoPos = env->addCheckBox(false, rect<s32>(20, 20, 280, 45), tabSystem, -1, dataManager.GetSysString(1274));
chkAutoPos->setChecked(true); chkAutoPos->setChecked(gameConf.chkAutoPos != 0);
chkRandomPos = env->addCheckBox(false, rect<s32>(40, 50, 300, 75), tabSystem, -1, dataManager.GetSysString(1275)); chkRandomPos = env->addCheckBox(false, rect<s32>(40, 50, 300, 75), tabSystem, -1, dataManager.GetSysString(1275));
chkRandomPos->setChecked(gameConf.chkRandomPos != 0);
chkAutoChain = env->addCheckBox(false, rect<s32>(20, 80, 280, 105), tabSystem, -1, dataManager.GetSysString(1276)); chkAutoChain = env->addCheckBox(false, rect<s32>(20, 80, 280, 105), tabSystem, -1, dataManager.GetSysString(1276));
chkAutoChain->setChecked(gameConf.chkAutoChain != 0);
chkWaitChain = env->addCheckBox(false, rect<s32>(20, 110, 280, 135), tabSystem, -1, dataManager.GetSysString(1277)); chkWaitChain = env->addCheckBox(false, rect<s32>(20, 110, 280, 135), tabSystem, -1, dataManager.GetSysString(1277));
chkWaitChain->setChecked(gameConf.chkWaitChain != 0);
chkIgnore1 = env->addCheckBox(false, rect<s32>(20, 170, 280, 195), tabSystem, -1, dataManager.GetSysString(1290)); chkIgnore1 = env->addCheckBox(false, rect<s32>(20, 170, 280, 195), tabSystem, -1, dataManager.GetSysString(1290));
chkIgnore1->setChecked(gameConf.chkIgnore1 != 0);
chkIgnore2 = env->addCheckBox(false, rect<s32>(20, 200, 280, 225), tabSystem, -1, dataManager.GetSysString(1291)); chkIgnore2 = env->addCheckBox(false, rect<s32>(20, 200, 280, 225), tabSystem, -1, dataManager.GetSysString(1291));
chkIgnore2->setChecked(false); chkIgnore2->setChecked(gameConf.chkIgnore2 != 0);
chkHideSetname = env->addCheckBox(false, rect<s32>(20, 260, 280, 285), tabSystem, -1, dataManager.GetSysString(1354));
chkHideSetname->setChecked(gameConf.chkHideSetname != 0);
// //
wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L""); wHand = env->addWindow(rect<s32>(500, 450, 825, 605), false, L"");
wHand->getCloseButton()->setVisible(false); wHand->getCloseButton()->setVisible(false);
...@@ -846,6 +854,14 @@ void Game::LoadConfig() { ...@@ -846,6 +854,14 @@ void Game::LoadConfig() {
gameConf.lastip[0] = 0; gameConf.lastip[0] = 0;
gameConf.lastport[0] = 0; gameConf.lastport[0] = 0;
gameConf.roompass[0] = 0; gameConf.roompass[0] = 0;
//settings
gameConf.chkAutoPos = 1;
gameConf.chkRandomPos = 0;
gameConf.chkAutoChain = 0;
gameConf.chkWaitChain = 0;
gameConf.chkIgnore1 = 0;
gameConf.chkIgnore2 = 0;
gameConf.chkHideSetname = 0;
fseek(fp, 0, SEEK_END); fseek(fp, 0, SEEK_END);
int fsize = ftell(fp); int fsize = ftell(fp);
fseek(fp, 0, SEEK_SET); fseek(fp, 0, SEEK_SET);
...@@ -878,6 +894,20 @@ void Game::LoadConfig() { ...@@ -878,6 +894,20 @@ void Game::LoadConfig() {
} else if(!strcmp(strbuf, "roompass")) { } else if(!strcmp(strbuf, "roompass")) {
BufferIO::DecodeUTF8(valbuf, wstr); BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.roompass, 20); BufferIO::CopyWStr(wstr, gameConf.roompass, 20);
} else if(!strcmp(strbuf, "autopos")) {
gameConf.chkAutoPos = atoi(valbuf);
} else if(!strcmp(strbuf, "randompos")) {
gameConf.chkRandomPos = atoi(valbuf);
} else if(!strcmp(strbuf, "autochain")) {
gameConf.chkAutoChain = atoi(valbuf);
} else if(!strcmp(strbuf, "waitchain")) {
gameConf.chkWaitChain = atoi(valbuf);
} else if(!strcmp(strbuf, "ignore1")) {
gameConf.chkIgnore1 = atoi(valbuf);
} else if(!strcmp(strbuf, "ignore2")) {
gameConf.chkIgnore2 = atoi(valbuf);
} else if(!strcmp(strbuf, "hide_setname")) {
gameConf.chkHideSetname = atoi(valbuf);
} else { } else {
// options allowing multiple words // options allowing multiple words
sscanf(linebuf, "%s = %240[^\n]", strbuf, valbuf); sscanf(linebuf, "%s = %240[^\n]", strbuf, valbuf);
...@@ -920,6 +950,14 @@ void Game::SaveConfig() { ...@@ -920,6 +950,14 @@ void Game::SaveConfig() {
fprintf(fp, "lastip = %s\n", linebuf); fprintf(fp, "lastip = %s\n", linebuf);
BufferIO::EncodeUTF8(gameConf.lastport, linebuf); BufferIO::EncodeUTF8(gameConf.lastport, linebuf);
fprintf(fp, "lastport = %s\n", linebuf); fprintf(fp, "lastport = %s\n", linebuf);
//settings
fprintf(fp, "autopos = %d\n", ((mainGame->chkAutoPos->isChecked()) ? 1 : 0));
fprintf(fp, "randompos = %d\n", ((mainGame->chkRandomPos->isChecked()) ? 1 : 0));
fprintf(fp, "autochain = %d\n", ((mainGame->chkAutoChain->isChecked()) ? 1 : 0));
fprintf(fp, "waitchain = %d\n", ((mainGame->chkWaitChain->isChecked()) ? 1 : 0));
fprintf(fp, "ignore1 = %d\n", ((mainGame->chkIgnore1->isChecked()) ? 1 : 0));
fprintf(fp, "ignore2 = %d\n", ((mainGame->chkIgnore2->isChecked()) ? 1 : 0));
fprintf(fp, "hide_setname = %d\n", ((mainGame->chkHideSetname->isChecked()) ? 1 : 0));
fclose(fp); fclose(fp);
} }
void Game::ShowCardInfo(int code) { void Game::ShowCardInfo(int code) {
...@@ -933,6 +971,23 @@ void Game::ShowCardInfo(int code) { ...@@ -933,6 +971,23 @@ void Game::ShowCardInfo(int code) {
myswprintf(formatBuffer, L"%ls[%08d]", dataManager.GetName(cd.alias), cd.alias); myswprintf(formatBuffer, L"%ls[%08d]", dataManager.GetName(cd.alias), cd.alias);
else myswprintf(formatBuffer, L"%ls[%08d]", dataManager.GetName(code), code); else myswprintf(formatBuffer, L"%ls[%08d]", dataManager.GetName(code), code);
stName->setText(formatBuffer); stName->setText(formatBuffer);
int offset = 0;
if(!mainGame->chkHideSetname->isChecked()) {
unsigned long long sc = cd.setcode;
if(cd.alias) {
auto aptr = dataManager._datas.find(cd.alias);
if(aptr != dataManager._datas.end())
sc = aptr->second.setcode;
}
if(sc) {
offset = 23;
myswprintf(formatBuffer, L"%ls%ls", dataManager.GetSysString(1329), dataManager.FormatSetName(sc));
stSetName->setText(formatBuffer);
} else
stSetName->setText(L"");
} else {
stSetName->setText(L"");
}
if(cd.type & TYPE_MONSTER) { if(cd.type & TYPE_MONSTER) {
myswprintf(formatBuffer, L"[%ls] %ls/%ls", dataManager.FormatType(cd.type), dataManager.FormatRace(cd.race), dataManager.FormatAttribute(cd.attribute)); myswprintf(formatBuffer, L"[%ls] %ls/%ls", dataManager.FormatType(cd.type), dataManager.FormatRace(cd.race), dataManager.FormatAttribute(cd.attribute));
stInfo->setText(formatBuffer); stInfo->setText(formatBuffer);
...@@ -955,14 +1010,16 @@ void Game::ShowCardInfo(int code) { ...@@ -955,14 +1010,16 @@ void Game::ShowCardInfo(int code) {
wcscat(formatBuffer, scaleBuffer); wcscat(formatBuffer, scaleBuffer);
} }
stDataInfo->setText(formatBuffer); stDataInfo->setText(formatBuffer);
stText->setRelativePosition(rect<s32>(15, 83, 287, 324)); stSetName->setRelativePosition(rect<s32>(15, 83, 296, 106));
scrCardText->setRelativePosition(rect<s32>(267, 83, 287, 324)); stText->setRelativePosition(rect<s32>(15, 83 + offset, 287, 324));
scrCardText->setRelativePosition(rect<s32>(267, 83 + offset, 287, 324));
} else { } else {
myswprintf(formatBuffer, L"[%ls]", dataManager.FormatType(cd.type)); myswprintf(formatBuffer, L"[%ls]", dataManager.FormatType(cd.type));
stInfo->setText(formatBuffer); stInfo->setText(formatBuffer);
stDataInfo->setText(L""); stDataInfo->setText(L"");
stText->setRelativePosition(rect<s32>(15, 60, 287, 324)); stSetName->setRelativePosition(rect<s32>(15, 60, 296, 83));
scrCardText->setRelativePosition(rect<s32>(267, 60, 287, 324)); stText->setRelativePosition(rect<s32>(15, 60 + offset, 287, 324));
scrCardText->setRelativePosition(rect<s32>(267, 60 + offset, 287, 324));
} }
showingtext = dataManager.GetText(code); showingtext = dataManager.GetText(code);
const auto& tsize = stText->getRelativePosition(); const auto& tsize = stText->getRelativePosition();
......
...@@ -24,6 +24,14 @@ struct Config { ...@@ -24,6 +24,14 @@ struct Config {
wchar_t textfont[256]; wchar_t textfont[256];
wchar_t numfont[256]; wchar_t numfont[256];
wchar_t roompass[20]; wchar_t roompass[20];
//settings
int chkAutoPos;
int chkRandomPos;
int chkAutoChain;
int chkWaitChain;
int chkIgnore1;
int chkIgnore2;
int chkHideSetname;
}; };
struct DuelInfo { struct DuelInfo {
...@@ -173,12 +181,14 @@ public: ...@@ -173,12 +181,14 @@ public:
irr::gui::IGUIStaticText* stName; irr::gui::IGUIStaticText* stName;
irr::gui::IGUIStaticText* stInfo; irr::gui::IGUIStaticText* stInfo;
irr::gui::IGUIStaticText* stDataInfo; irr::gui::IGUIStaticText* stDataInfo;
irr::gui::IGUIStaticText* stSetName;
irr::gui::IGUIStaticText* stText; irr::gui::IGUIStaticText* stText;
irr::gui::IGUIScrollBar* scrCardText; irr::gui::IGUIScrollBar* scrCardText;
irr::gui::IGUICheckBox* chkAutoPos; irr::gui::IGUICheckBox* chkAutoPos;
irr::gui::IGUICheckBox* chkRandomPos; irr::gui::IGUICheckBox* chkRandomPos;
irr::gui::IGUICheckBox* chkAutoChain; irr::gui::IGUICheckBox* chkAutoChain;
irr::gui::IGUICheckBox* chkWaitChain; irr::gui::IGUICheckBox* chkWaitChain;
irr::gui::IGUICheckBox* chkHideSetname;
irr::gui::IGUIListBox* lstLog; irr::gui::IGUIListBox* lstLog;
irr::gui::IGUIButton* btnClearLog; irr::gui::IGUIButton* btnClearLog;
irr::gui::IGUIButton* btnSaveLog; irr::gui::IGUIButton* btnSaveLog;
......
...@@ -171,6 +171,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -171,6 +171,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
mainGame->stName->setText(L""); mainGame->stName->setText(L"");
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false); mainGame->scrCardText->setVisible(false);
mainGame->wReplayControl->setVisible(true); mainGame->wReplayControl->setVisible(true);
......
...@@ -62,6 +62,7 @@ int SingleMode::SinglePlayThread(void* param) { ...@@ -62,6 +62,7 @@ int SingleMode::SinglePlayThread(void* param) {
mainGame->stName->setText(L""); mainGame->stName->setText(L"");
mainGame->stInfo->setText(L""); mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L""); mainGame->stDataInfo->setText(L"");
mainGame->stSetName->setText(L"");
mainGame->stText->setText(L""); mainGame->stText->setText(L"");
mainGame->scrCardText->setVisible(false); mainGame->scrCardText->setVisible(false);
mainGame->wPhase->setVisible(true); mainGame->wPhase->setVisible(true);
......
This diff is collapsed.
...@@ -11,3 +11,10 @@ numfont = c:/windows/fonts/arialbd.ttf ...@@ -11,3 +11,10 @@ numfont = c:/windows/fonts/arialbd.ttf
serverport = 7911 serverport = 7911
lastip = 127.0.0.1 lastip = 127.0.0.1
lastport = 7911 lastport = 7911
autopos = 1
randompos = 0
autochain = 0
waitchain = 0
ignore1 = 0
ignore2 = 0
hide_setname = 0
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