Commit 51983cf5 authored by mercury233's avatar mercury233

Revert "add CCG support"

This reverts commit db332d1b.
parent 773a37c2
...@@ -1448,16 +1448,14 @@ void DeckBuilder::FilterCards() { ...@@ -1448,16 +1448,14 @@ void DeckBuilder::FilterCards() {
if(filter_lm) { if(filter_lm) {
if(filter_lm <= 3 && (!filterList->count(ptr->first) || (*filterList).at(ptr->first) != filter_lm - 1)) if(filter_lm <= 3 && (!filterList->count(ptr->first) || (*filterList).at(ptr->first) != filter_lm - 1))
continue; continue;
if(filter_lm == 4 && (data.ot & 0x3) != 1) if(filter_lm == 4 && data.ot != 1)
continue; continue;
if(filter_lm == 5 && (data.ot & 0x3) != 2) if(filter_lm == 5 && data.ot != 2)
continue; continue;
if(filter_lm == 6 && (data.ot & 0x3) != 3) if(filter_lm == 6 && data.ot != 3)
continue; continue;
if(filter_lm == 7 && data.ot != 4) if(filter_lm == 7 && data.ot != 4)
continue; continue;
if(filter_lm == 8 && !(data.ot & 0x8))
continue;
} }
bool is_target = true; bool is_target = true;
for (auto elements_iterator = query_elements.begin(); elements_iterator != query_elements.end(); ++elements_iterator) { for (auto elements_iterator = query_elements.begin(); elements_iterator != query_elements.end(); ++elements_iterator) {
......
...@@ -71,24 +71,7 @@ const std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) { ...@@ -71,24 +71,7 @@ const std::unordered_map<int, int>* DeckManager::GetLFListContent(int lfhash) {
return &lit->content; return &lit->content;
return nullptr; return nullptr;
} }
int DeckManager::IsGameRuleDisallowed(unsigned char hostInfoRule, unsigned int cardOt) { int DeckManager::CheckDeck(Deck& deck, int lfhash, bool allow_ocg, bool allow_tcg) {
bool allow_ocg = hostInfoRule == 0 || hostInfoRule == 2; // OCG can be used in OCG and OT duels
bool allow_tcg = hostInfoRule == 1 || hostInfoRule == 2; // TCG can be used in TCG and OT duels
bool allow_ccg = hostInfoRule == 0 || hostInfoRule == 4 || hostInfoRule == 2; // CCG can be used in OCG, CCG and OT duels
if(!allow_ocg && (cardOt & 0x3 == 0x1))
return DECKERROR_OCGONLY;
if(!allow_tcg && (cardOt & 0x3 == 0x2))
return DECKERROR_TCGONLY;
if(hostInfoRule == 4 && !(cardOt & 0x8) && (cardOt & 0x3)) { // in CCG duels, cards labeled with ither OCG or TCG, but not CCG, would not be allowed.
if(cardOt & 0x3 == 0x2) {
return DECKERROR_TCGONLY;
} else {
return DECKERROR_OCGONLY;
}
}
return 0;
}
int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) {
std::unordered_map<int, int> ccount; std::unordered_map<int, int> ccount;
auto list = GetLFListContent(lfhash); auto list = GetLFListContent(lfhash);
if(!list) if(!list)
...@@ -103,9 +86,10 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) { ...@@ -103,9 +86,10 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) {
for(size_t i = 0; i < deck.main.size(); ++i) { for(size_t i = 0; i < deck.main.size(); ++i) {
code_pointer cit = deck.main[i]; code_pointer cit = deck.main[i];
const int gameruleDeckError = IsGameRuleDisallowed(hostInfoRule, cit->second.ot); if(!allow_ocg && (cit->second.ot == 0x1))
if(gameruleDeckError) return (DECKERROR_OCGONLY << 28) + cit->first;
return (gameruleDeckError << 28) + cit->first; if(!allow_tcg && (cit->second.ot == 0x2))
return (DECKERROR_TCGONLY << 28) + cit->first;
if(cit->second.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_TOKEN | TYPE_LINK)) if(cit->second.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_TOKEN | TYPE_LINK))
return (DECKERROR_EXTRACOUNT << 28); return (DECKERROR_EXTRACOUNT << 28);
int code = cit->second.alias ? cit->second.alias : cit->first; int code = cit->second.alias ? cit->second.alias : cit->first;
...@@ -119,9 +103,10 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) { ...@@ -119,9 +103,10 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) {
} }
for(size_t i = 0; i < deck.extra.size(); ++i) { for(size_t i = 0; i < deck.extra.size(); ++i) {
code_pointer cit = deck.extra[i]; code_pointer cit = deck.extra[i];
const int gameruleDeckError = IsGameRuleDisallowed(hostInfoRule, cit->second.ot); if(!allow_ocg && (cit->second.ot == 0x1))
if(gameruleDeckError) return (DECKERROR_OCGONLY << 28) + cit->first;
return (gameruleDeckError << 28) + cit->first; if(!allow_tcg && (cit->second.ot == 0x2))
return (DECKERROR_TCGONLY << 28) + cit->first;
int code = cit->second.alias ? cit->second.alias : cit->first; int code = cit->second.alias ? cit->second.alias : cit->first;
ccount[code]++; ccount[code]++;
dc = ccount[code]; dc = ccount[code];
...@@ -133,9 +118,10 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) { ...@@ -133,9 +118,10 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, unsigned char hostInfoRule) {
} }
for(size_t i = 0; i < deck.side.size(); ++i) { for(size_t i = 0; i < deck.side.size(); ++i) {
code_pointer cit = deck.side[i]; code_pointer cit = deck.side[i];
const int gameruleDeckError = IsGameRuleDisallowed(hostInfoRule, cit->second.ot); if(!allow_ocg && (cit->second.ot == 0x1))
if(gameruleDeckError) return (DECKERROR_OCGONLY << 28) + cit->first;
return (gameruleDeckError << 28) + cit->first; if(!allow_tcg && (cit->second.ot == 0x2))
return (DECKERROR_TCGONLY << 28) + cit->first;
int code = cit->second.alias ? cit->second.alias : cit->first; int code = cit->second.alias ? cit->second.alias : cit->first;
ccount[code]++; ccount[code]++;
dc = ccount[code]; dc = ccount[code];
......
...@@ -39,8 +39,7 @@ public: ...@@ -39,8 +39,7 @@ public:
void LoadLFList(); void LoadLFList();
const wchar_t* GetLFListName(int lfhash); const wchar_t* GetLFListName(int lfhash);
const std::unordered_map<int, int>* GetLFListContent(int lfhash); const std::unordered_map<int, int>* GetLFListContent(int lfhash);
int IsGameRuleDisallowed(unsigned char hostInfoRule, unsigned int cardOt); int CheckDeck(Deck& deck, int lfhash, bool allow_ocg, bool allow_tcg);
int CheckDeck(Deck &deck, int lfhash, unsigned char hostInfoRule);
int LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec); int LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec);
bool LoadSide(Deck& deck, int* dbuf, int mainc, int sidec); bool LoadSide(Deck& deck, int* dbuf, int mainc, int sidec);
#ifndef YGOPRO_SERVER_MODE #ifndef YGOPRO_SERVER_MODE
......
...@@ -1105,17 +1105,24 @@ void Game::DrawThumb(code_pointer cp, position2di pos, const std::unordered_map< ...@@ -1105,17 +1105,24 @@ void Game::DrawThumb(code_pointer cp, position2di pos, const std::unordered_map<
break; break;
} }
} }
if(cbLimit->getSelected() >= 4 && ((cp->second.ot & 0x8) || cp->second.ot & 0x3 && (cp->second.ot & 0x3) != 0x3)) { if(cbLimit->getSelected() >= 4 && (cp->second.ot & gameConf.defaultOT)) {
int xOffset = 0, yOffset = 0; switch(cp->second.ot) {
if(cp->second.ot & 0x8) case 1:
xOffset += 128; driver->draw2DImage(imageManager.tOT, otloc, recti(0, 128, 128, 192), 0, 0, true);
else if((cp->second.ot & 0x3)== 0x2) { break;
yOffset += 64; case 2:
driver->draw2DImage(imageManager.tOT, otloc, recti(0, 192, 128, 256), 0, 0, true);
break;
} }
if(!deckManager.IsGameRuleDisallowed(gameConf.defaultOT, cp->second.ot)) { } else if(cbLimit->getSelected() >= 4 || !(cp->second.ot & gameConf.defaultOT)) {
yOffset += 128; switch(cp->second.ot) {
case 1:
driver->draw2DImage(imageManager.tOT, otloc, recti(0, 0, 128, 64), 0, 0, true);
break;
case 2:
driver->draw2DImage(imageManager.tOT, otloc, recti(0, 64, 128, 128), 0, 0, true);
break;
} }
driver->draw2DImage(imageManager.tOT, otloc, recti(xOffset, yOffset, 128 + xOffset, 64 + yOffset), 0, 0, true);
} }
} }
void Game::DrawDeckBd() { void Game::DrawDeckBd() {
......
...@@ -421,7 +421,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -421,7 +421,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
wchar_t msgbuf[256]; wchar_t msgbuf[256];
myswprintf(msgbuf, L"%ls%ls\n", dataManager.GetSysString(1226), deckManager.GetLFListName(pkt->info.lflist)); myswprintf(msgbuf, L"%ls%ls\n", dataManager.GetSysString(1226), deckManager.GetLFListName(pkt->info.lflist));
str.append(msgbuf); str.append(msgbuf);
myswprintf(msgbuf, L"%ls%ls\n", dataManager.GetSysString(1225), dataManager.GetSysString(pkt->info.rule == 4 ? 1249 : 1240 + pkt->info.rule)); myswprintf(msgbuf, L"%ls%ls\n", dataManager.GetSysString(1225), dataManager.GetSysString(1240 + pkt->info.rule));
str.append(msgbuf); str.append(msgbuf);
myswprintf(msgbuf, L"%ls%ls\n", dataManager.GetSysString(1227), dataManager.GetSysString(1244 + pkt->info.mode)); myswprintf(msgbuf, L"%ls%ls\n", dataManager.GetSysString(1227), dataManager.GetSysString(1244 + pkt->info.mode));
str.append(msgbuf); str.append(msgbuf);
......
...@@ -224,7 +224,6 @@ bool Game::Initialize() { ...@@ -224,7 +224,6 @@ bool Game::Initialize() {
cbRule->addItem(dataManager.GetSysString(1241)); cbRule->addItem(dataManager.GetSysString(1241));
cbRule->addItem(dataManager.GetSysString(1242)); cbRule->addItem(dataManager.GetSysString(1242));
cbRule->addItem(dataManager.GetSysString(1243)); cbRule->addItem(dataManager.GetSysString(1243));
cbRule->addItem(dataManager.GetSysString(1249));
cbRule->setSelected(gameConf.defaultOT - 1); cbRule->setSelected(gameConf.defaultOT - 1);
env->addStaticText(dataManager.GetSysString(1227), rect<s32>(20, 90, 220, 110), false, false, wCreateHost); env->addStaticText(dataManager.GetSysString(1227), rect<s32>(20, 90, 220, 110), false, false, wCreateHost);
cbMatchMode = env->addComboBox(rect<s32>(140, 85, 300, 110), wCreateHost); cbMatchMode = env->addComboBox(rect<s32>(140, 85, 300, 110), wCreateHost);
...@@ -706,7 +705,6 @@ bool Game::Initialize() { ...@@ -706,7 +705,6 @@ bool Game::Initialize() {
cbLimit->addItem(dataManager.GetSysString(1241)); cbLimit->addItem(dataManager.GetSysString(1241));
cbLimit->addItem(dataManager.GetSysString(1242)); cbLimit->addItem(dataManager.GetSysString(1242));
cbLimit->addItem(dataManager.GetSysString(1243)); cbLimit->addItem(dataManager.GetSysString(1243));
cbLimit->addItem(dataManager.GetSysString(1249));
stAttribute = env->addStaticText(dataManager.GetSysString(1319), rect<s32>(10, 22 + 50 / 6, 70, 42 + 50 / 6), false, false, wFilter); stAttribute = env->addStaticText(dataManager.GetSysString(1319), rect<s32>(10, 22 + 50 / 6, 70, 42 + 50 / 6), false, false, wFilter);
cbAttribute = env->addComboBox(rect<s32>(60, 20 + 50 / 6, 190, 40 + 50 / 6), wFilter, COMBOBOX_ATTRIBUTE); cbAttribute = env->addComboBox(rect<s32>(60, 20 + 50 / 6, 190, 40 + 50 / 6), wFilter, COMBOBOX_ATTRIBUTE);
cbAttribute->setMaxSelectionRows(10); cbAttribute->setMaxSelectionRows(10);
......
...@@ -295,7 +295,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) { ...@@ -295,7 +295,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
duel_mode = new TagDuel(); duel_mode = new TagDuel();
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, TagDuel::TagTimer, duel_mode); duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, TagDuel::TagTimer, duel_mode);
} }
if(pkt->info.rule > 4) if(pkt->info.rule > 3)
pkt->info.rule = 0; pkt->info.rule = 0;
if(pkt->info.mode > 2) if(pkt->info.mode > 2)
pkt->info.mode = 0; pkt->info.mode = 0;
......
...@@ -357,7 +357,9 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) { ...@@ -357,7 +357,9 @@ void SingleDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if(deck_error[dp->type]) { if(deck_error[dp->type]) {
deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type]; deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type];
} else { } else {
deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule); bool allow_ocg = host_info.rule == 0 || host_info.rule == 2;
bool allow_tcg = host_info.rule == 1 || host_info.rule == 2;
deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, allow_ocg, allow_tcg);
} }
} }
if(deckerror) { if(deckerror) {
......
...@@ -335,7 +335,9 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) { ...@@ -335,7 +335,9 @@ void TagDuel::PlayerReady(DuelPlayer* dp, bool is_ready) {
if(deck_error[dp->type]) { if(deck_error[dp->type]) {
deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type]; deckerror = (DECKERROR_UNKNOWNCARD << 28) + deck_error[dp->type];
} else { } else {
deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, host_info.rule); bool allow_ocg = host_info.rule == 0 || host_info.rule == 2;
bool allow_tcg = host_info.rule == 1 || host_info.rule == 2;
deckerror = deckManager.CheckDeck(pdeck[dp->type], host_info.lflist, allow_ocg, allow_tcg);
} }
} }
if(deckerror) { if(deckerror) {
......
...@@ -307,7 +307,6 @@ ...@@ -307,7 +307,6 @@
!system 1246 TAG !system 1246 TAG
!system 1247 标准对战 !system 1247 标准对战
!system 1248 自定义 !system 1248 自定义
!system 1249 简体中文
!system 1250 决斗准备 !system 1250 决斗准备
!system 1251 →决斗者 !system 1251 →决斗者
!system 1252 →观战 !system 1252 →观战
......
textures/ot.png

9.92 KB | W: | H:

textures/ot.png

8.26 KB | W: | H:

textures/ot.png
textures/ot.png
textures/ot.png
textures/ot.png
  • 2-up
  • Swipe
  • Onion skin
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