diff --git a/projects/mtg/bin/Res/test/_tests.txt b/projects/mtg/bin/Res/test/_tests.txt index 73823062a..e4f71d0ac 100644 --- a/projects/mtg/bin/Res/test/_tests.txt +++ b/projects/mtg/bin/Res/test/_tests.txt @@ -209,10 +209,10 @@ divergent_growth.txt doomed_necromancer.txt double_strike_i145.txt double_strike2_i145.txt +dragon_broodmother_i491.txt dragon_fodder.txt dragon_fodder2.txt dragon_whelp_i154.txt -dragon_broodmother_multicolored tokens test.txt drain_life.txt dream_fracture_i142.txt drift_of_the_dead.txt diff --git a/projects/mtg/bin/Res/test/bugs/dragon_broodmother_i491.txt b/projects/mtg/bin/Res/test/dragon_broodmother_i491.txt similarity index 100% rename from projects/mtg/bin/Res/test/bugs/dragon_broodmother_i491.txt rename to projects/mtg/bin/Res/test/dragon_broodmother_i491.txt diff --git a/projects/mtg/bin/Res/test/dragon_broodmother_multicolored tokens test.txt b/projects/mtg/bin/Res/test/dragon_broodmother_multicolored tokens test.txt deleted file mode 100644 index c3ff0d916..000000000 --- a/projects/mtg/bin/Res/test/dragon_broodmother_multicolored tokens test.txt +++ /dev/null @@ -1,28 +0,0 @@ -#Bug: "new school" Tokens can't have two colors - -[INIT] -UNTAP -[PLAYER1] -inplay:mountain -hand:shock -[PLAYER2] -inplay:dragon broodmother,Boartusk Liege -[DO] -next -#upkeep -choice 1 -next -#draw -next -#main -mountain -shock -Dragon -[ASSERT] -FIRSTMAIN -[PLAYER1] -graveyard:shock -inplay:mountain -[PLAYER2] -inplay:dragon broodmother,Boartusk Liege,* -[END] \ No newline at end of file diff --git a/projects/mtg/include/utils.h b/projects/mtg/include/utils.h index 25991a20d..93d1f98bb 100644 --- a/projects/mtg/include/utils.h +++ b/projects/mtg/include/utils.h @@ -33,11 +33,16 @@ using std::string; + //string manipulation methods string& trim(string &str); string& ltrim(string &str); string& rtrim(string &str); +std::vector &split(const std::string &s, char delim, std::vector &elems); +std::vector split(const std::string &s, char delim); //splits a string with "delim" and returns a vector of strings. + + int loadRandValues(string s); int filesize(const char * filename); int fileExists(const char * filename); diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index 620656926..16fc07124 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -89,22 +89,12 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi { string value = val; std::transform(value.begin(), value.end(), value.begin(), ::tolower); - listcolors; - for (int j = 0; j < Constants::MTG_NB_COLORS; j++){ - size_t found = value.find(Constants::MTGColorStrings[j]); - if (found != string::npos){ - colors.push_back(j); - } - } - if(colors.size()) - { - primitive->setColor(0,1); - primitive->removeColor(0); - } - list::iterator it; - for ( it=colors.begin() ; it != colors.end(); it++ ){ - primitive->setColor(*it); - } + vector values = split(value, ','); + int removeAllOthers = 1; + for (size_t values_i = 0; values_i < values.size(); ++values_i) { + primitive->setColor(values[values_i], removeAllOthers); + removeAllOthers = 0; + } } break; diff --git a/projects/mtg/src/utils.cpp b/projects/mtg/src/utils.cpp index 7f2647d42..d09bf4383 100644 --- a/projects/mtg/src/utils.cpp +++ b/projects/mtg/src/utils.cpp @@ -1,6 +1,9 @@ #include "../include/config.h" #include "../include/utils.h" #include +#include +#include + using std::vector; int randValuesCursor = -1; @@ -201,3 +204,18 @@ string& rtrim(string &str) str.resize(str.find_last_not_of(" \t") + 1); return str; } + +std::vector &split(const std::string &s, char delim, std::vector &elems) { + std::stringstream ss(s); + std::string item; + while(std::getline(ss, item, delim)) { + elems.push_back(item); + } + return elems; +} + + +std::vector split(const std::string &s, char delim) { + std::vector elems; + return split(s, delim, elems); +}