Commit 0ae64a2d authored by nanahira's avatar nanahira

custom deck count

parent 63fa4417
......@@ -79,12 +79,21 @@ int DeckManager::CheckDeck(Deck& deck, int lfhash, bool allow_ocg, bool allow_tc
if(!list)
return 0;
int dc = 0;
#ifdef YGOPRO_SERVER_MODE
if(deck.main.size() < DECKCOUNT_MAIN_MIN || deck.main.size() > DECKCOUNT_MAIN_MAX)
return (DECKERROR_MAINCOUNT << 28) + deck.main.size();
if(deck.extra.size() > DECKCOUNT_SIDE)
return (DECKERROR_EXTRACOUNT << 28) + deck.extra.size();
if(deck.side.size() > DECKCOUNT_EXTRA)
return (DECKERROR_SIDECOUNT << 28) + deck.side.size();
#else
if(deck.main.size() < 40 || deck.main.size() > 60)
return (DECKERROR_MAINCOUNT << 28) + deck.main.size();
if(deck.extra.size() > 15)
return (DECKERROR_EXTRACOUNT << 28) + deck.extra.size();
if(deck.side.size() > 15)
return (DECKERROR_SIDECOUNT << 28) + deck.side.size();
#endif
for(size_t i = 0; i < deck.main.size(); ++i) {
code_pointer cit = deck.main[i];
......@@ -148,9 +157,21 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) {
}
if(cd.type & TYPE_TOKEN)
continue;
else if(cd.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK) && deck.extra.size() < 15) {
else if(cd.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK) &&
#ifdef YGOPRO_SERVER_MODE
deck.extra.size() < DECKCOUNT_EXTRA
#else
deck.extra.size() < 15
#endif
) {
deck.extra.push_back(dataManager.GetCodePointer(code)); //verified by GetData()
} else if(deck.main.size() < 60) {
} else
#ifdef YGOPRO_SERVER_MODE
if(deck.main.size() < DECKCOUNT_MAIN_MAX)
#else
if(deck.main.size() < 60)
#endif
{
deck.main.push_back(dataManager.GetCodePointer(code));
}
}
......@@ -162,7 +183,11 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec) {
}
if(cd.type & TYPE_TOKEN)
continue;
#ifdef YGOPRO_SERVER_MODE
if(deck.side.size() < DECKCOUNT_SIDE)
#else
if(deck.side.size() < 15)
#endif
deck.side.push_back(dataManager.GetCodePointer(code)); //verified by GetData()
}
return errorcode;
......
......@@ -64,4 +64,24 @@ extern DeckManager deckManager;
}
#ifdef YGOPRO_SERVER_MODE
#ifndef DECKCOUNT_MAIN_MIN
#define DECKCOUNT_MAIN_MIN 40
#endif
#ifndef DECKCOUNT_MAIN_MAX
#define DECKCOUNT_MAIN_MAX 60
#endif
#ifndef DECKCOUNT_SIDE
#define DECKCOUNT_SIDE 15
#endif
#ifndef DECKCOUNT_EXTRA
#define DECKCOUNT_EXTRA 15
#endif
#endif //YGOPRO_SERVER_MODE
#endif //DECKMANAGER_H
......@@ -3,8 +3,18 @@ include "lzma/."
project "ygopro"
kind "ConsoleApp"
local mr=os.getenv("YGOPRO_DEFAULT_DUEL_RULE")
if mr and tonumber(mr) then defines { "DEFAULT_DUEL_RULE="..tonumber(mr) } end
local params={
"DEFAULT_DUEL_RULE",
"DECKCOUNT_MAIN_MIN",
"DECKCOUNT_MAIN_MAX",
"DECKCOUNT_SIDE",
"DECKCOUNT_EXTRA",
}
for _,param in ipairs(params) do
local val=os.getenv("YGOPRO_"..param)
if val and tonumber(val) then defines { param.."="..tonumber(val) } end
end
files { "gframe.cpp", "config.h",
"game.cpp", "game.h", "myfilesystem.h",
......
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