diff --git a/projects/mtg/bin/Res/sets/LEG/_cards.dat b/projects/mtg/bin/Res/sets/LEG/_cards.dat index 0d1b0dfac..5a4abdd40 100644 --- a/projects/mtg/bin/Res/sets/LEG/_cards.dat +++ b/projects/mtg/bin/Res/sets/LEG/_cards.dat @@ -793,7 +793,7 @@ text=All lands are 1/1 creatures that are still lands. id=1533 name=Living Plane rarity=R -type=World Enchantment +type=Enchantment mana={2}{G}{G} [/card] [card] diff --git a/projects/mtg/bin/Res/sets/MOR/_cards.dat b/projects/mtg/bin/Res/sets/MOR/_cards.dat index 356c1ae83..d882dc104 100644 --- a/projects/mtg/bin/Res/sets/MOR/_cards.dat +++ b/projects/mtg/bin/Res/sets/MOR/_cards.dat @@ -228,8 +228,8 @@ rarity=C id=152720 name=Stream of Unconsciousness mana={U} -type=Tribal Instant -subtype=Wizard +type=Instant +subtype=Wizard Tribal text=Target creature gets -4/-0 until end of turn. If you control a Wizard, draw a card. target=creature auto=-4/0 @@ -258,8 +258,8 @@ auto=token(Faerie Rogue,Creature Faerie,1/1,flying black) name=Violet Pall rarity=C mana={4}{B} -type=Tribal Instant -subtype=Faerie +type=Instant +subtype=Faerie Tribal [/card] [card] text={3}{B}, Sacrifice a Goblin: Put two 1/1 black Goblin Rogue creature tokens onto the battlefield. diff --git a/projects/mtg/include/MTGDeck.h b/projects/mtg/include/MTGDeck.h index aa5808711..f061ff9c0 100644 --- a/projects/mtg/include/MTGDeck.h +++ b/projects/mtg/include/MTGDeck.h @@ -39,6 +39,9 @@ class MtgSets{ class MTGAllCards { private: MTGCard * tempCard; +#if defined (_DEBUG) + bool committed; +#endif protected: int conf_read_mode; int colorsCount[Constants::MTG_NB_COLORS]; diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index ba31cf831..4d4101c03 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -43,7 +43,15 @@ int MtgSets::find(string name){ int MTGAllCards::processConfLine(string s, MTGCard *card){ unsigned int i = s.find_first_of("="); - if (i == string::npos) return 0; + if (i == string::npos){ +#if defined (_DEBUG) + if (s.size() && s[0] == '#') return 0; + char buffer[4096]; + sprintf(buffer, "MTGDECK: Bad Line in %s/_cards.dat:\n %s\n", MtgSets::SetsList->values[card->setId].c_str(), s.c_str()); + OutputDebugString(buffer); +#endif + return 0; + } string key = s.substr(0,i); string value = s.substr(i+1); @@ -95,34 +103,46 @@ int MTGAllCards::processConfLine(string s, MTGCard *card){ }else if(key.compare("type")==0){ switch(value.c_str()[0]){ case 'C': + case 'c': card->setType( "Creature"); break; case 'A': + case 'a': card->setType( "Artifact"); card->setColor(Constants::MTG_COLOR_ARTIFACT); if (value.c_str()[8] == ' ' && value.c_str()[9] == 'C') card->setSubtype("Creature"); break; case 'E': + case 'e': card->setType( "Enchantment"); break; case 'S': + case 's': card->setType( "Sorcery"); break; case 'B'://Basic Land + case 'b': card->setColor(Constants::MTG_COLOR_LAND); card->setType("Land"); card->setType("Basic"); break; case 'L': + case 'l': card->setColor(Constants::MTG_COLOR_LAND); card->setType( "Land"); break; case 'I': + case 'i': card->setType( "Instant"); break; default: card->setType( "Error"); +#if defined (_DEBUG) + char buffer[4096]; + sprintf(buffer, "MTGDECK: Bad Card Type in %s/_cards.dat:\n %s\n", MtgSets::SetsList->values[card->setId].c_str(), s.c_str()); + OutputDebugString(buffer); +#endif break; } @@ -167,6 +187,9 @@ void MTGAllCards::init(){ total_cards = 0; initCounters(); srand(time(0)); // initialize random +#if defined (_DEBUG) + committed = true; +#endif } @@ -274,6 +297,14 @@ int MTGAllCards::readConfLine(std::ifstream &file, int set_id){ switch(conf_read_mode) { case 0: if (s[0] == '['){ +#if defined (_DEBUG) + if (!committed){ + OutputDebugString("MTGDECK: Card not committed before creating new one, Memory leak risk\n "); + OutputDebugString(tempCard->getName().c_str()); + OutputDebugString("\n"); + } + committed = false; +#endif tempCard = NEW MTGCard(set_id); conf_read_mode = 1; } @@ -291,6 +322,9 @@ int MTGAllCards::readConfLine(std::ifstream &file, int set_id){ ids.push_back(newId); collection[newId] = tempCard; total_cards++; +#if defined (_DEBUG) + committed = true; +#endif } }else{ processConfLine(s, tempCard);