diff --git a/projects/mtg/include/DeckMetaData.h b/projects/mtg/include/DeckMetaData.h index 48329373c..f26ca2282 100644 --- a/projects/mtg/include/DeckMetaData.h +++ b/projects/mtg/include/DeckMetaData.h @@ -24,7 +24,6 @@ private: string mAvatarFilename; string mColorIndex; - map mAlternateCardMap; // statistical information int mGamesPlayed, mVictories, mPercentVictories, mDifficulty; @@ -45,7 +44,6 @@ public: string getColorIndex(); int getAvatarId(int deckId); string getStatsSummary(); - map& getAlternateMappings(); int getDeckId(); int getGamesPlayed(); diff --git a/projects/mtg/include/MTGDeck.h b/projects/mtg/include/MTGDeck.h index 7da5892b0..5b06687cd 100644 --- a/projects/mtg/include/MTGDeck.h +++ b/projects/mtg/include/MTGDeck.h @@ -120,7 +120,6 @@ public: MTGCard * _(int id); MTGCard * getCardById(int id); MTGCard * getCardByName(string name); - MTGCard * getCard(string inputText); int load(const char * config_file, const char * setName = NULL, int autoload = 1); int countByType(const char * _type); int countByColor(int color); @@ -155,14 +154,13 @@ protected: public: MTGAllCards * database; map cards; - map alternates; string meta_desc; string meta_name; int meta_id; int totalCards(); int totalPrice(); MTGDeck(MTGAllCards * _allcards); - MTGDeck(const char * config_file, MTGAllCards * _allcards, int meta_only = 0); + MTGDeck(const char * config_file, MTGAllCards * _allcards, int meta_only = 0,int difficultySetting = 0); int addRandomCards(int howmany, int * setIds = NULL, int nbSets = 0, int rarity = -1, const char * subtype = NULL, int * colors = NULL, int nbcolors = 0); int add(int cardid); diff --git a/projects/mtg/src/AIPlayer.cpp b/projects/mtg/src/AIPlayer.cpp index 3ae3b5aa8..e1e6aca63 100644 --- a/projects/mtg/src/AIPlayer.cpp +++ b/projects/mtg/src/AIPlayer.cpp @@ -1180,8 +1180,17 @@ AIPlayer * AIPlayerFactory::createAIPlayer(MTGAllCards * collection, Player * op sprintf(deckFileSmall, "ai_baka_deck%i", deckid); } DeckStats * stats = DeckStats::GetInstance(); - - MTGDeck * tempDeck = NEW MTGDeck(deckFile, collection, 0); +int deckSetting = NULL; +int diff = stats->percentVictories(); + if (diff >= 65) + { + deckSetting = HARD; + } + else if (diff < 65) + { + deckSetting = EASY; + } + MTGDeck * tempDeck = NEW MTGDeck(deckFile, collection,0,deckSetting); AIPlayerBaka * baka = NEW AIPlayerBaka(tempDeck, deckFile, deckFileSmall, avatarFile); baka->deckId = deckid; SAFE_DELETE(tempDeck); diff --git a/projects/mtg/src/DeckMetaData.cpp b/projects/mtg/src/DeckMetaData.cpp index 251183c9f..64c854a88 100644 --- a/projects/mtg/src/DeckMetaData.cpp +++ b/projects/mtg/src/DeckMetaData.cpp @@ -96,7 +96,6 @@ void DeckMetaData::LoadDeck() mDescription = trim(deck.meta_desc); mDeckId = atoi((mFilename.substr(mFilename.find("deck") + 4, mFilename.find(".txt"))).c_str()); mDeckLoaded = true; - mAlternateCardMap = deck.alternates; } @@ -182,11 +181,6 @@ string DeckMetaData::getStatsSummary() return statsSummary.str(); } -map& DeckMetaData::getAlternateMappings() -{ - return mAlternateCardMap; -} - void DeckMetaData::setColorIndex(const string& colorIndex) { mColorIndex = colorIndex; diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index b7a912da2..1c9e86fb4 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -676,18 +676,16 @@ MTGCard * MTGAllCards::getCardByName(string name) if (!name.size()) return NULL; if (name[0] == '#') return NULL; - map::iterator cached = mtgCardByNameCache.end(); - if ( mtgCardByNameCache.size() > 0 ) - cached = mtgCardByNameCache.find(name); + map::iterator cached = mtgCardByNameCache.find(name); if (cached!= mtgCardByNameCache.end()) { return cached->second; } - int cardId = atoi(name.c_str()); - if (cardId) + int cardnb = atoi(name.c_str()); + if (cardnb) { - MTGCard * result = getCardById(cardId); + MTGCard * result = getCardById(cardnb); mtgCardByNameCache[name] = result; return result; } @@ -744,7 +742,7 @@ int MTGDeck::totalPrice() return total; } -MTGDeck::MTGDeck(const char * config_file, MTGAllCards * _allcards, int meta_only) +MTGDeck::MTGDeck(const char * config_file, MTGAllCards * _allcards, int meta_only,int difficultyRating) { total_cards = 0; database = _allcards; @@ -777,44 +775,58 @@ MTGDeck::MTGDeck(const char * config_file, MTGAllCards * _allcards, int meta_onl meta_desc.append(s.substr(found + 5)); continue; } - - found = s.find("toggledifficulty:"); - if (found != string::npos) - { - string cards = s.substr(found + 17); - size_t separator = cards.find("|"); - string cardeasy = cards.substr(0,separator); - string cardhard = cards.substr(separator + 1); - MTGCard *sourceCard = MTGCollection()->getCardByName( cardeasy ); - MTGCard *alternateCard = MTGCollection()->getCardByName( cardhard ); - if ( alternateCard && sourceCard ) - alternates.insert( make_pair( sourceCard->getMTGId(), alternateCard->getMTGId())); - else - DebugTrace("Failed to map card Alternates: [" << cardeasy << "] and [" << cardhard << "]"); - continue; - } - continue; } if (meta_only) break; - int numberOfCopies = 1; + int nb = 1; size_t found = s.find(" *"); if (found != string::npos) { - numberOfCopies = atoi(s.substr(found + 2).c_str()); + nb = atoi(s.substr(found + 2).c_str()); s = s.substr(0, found); } - MTGCard *card = database->getCardByName( s ); - if ( card ) + size_t diff = s.find("toggledifficulty:"); + if(diff != string::npos) { - for (int i = 0; i < numberOfCopies; i++) + string cards = s.substr(diff + 17); + size_t separator = cards.find("|"); + string cardeasy = cards.substr(0,separator); + string cardhard = cards.substr(separator + 1); + if(difficultyRating == HARD) { - add(card); + s = cardhard; } + else + { + s = cardeasy; + } + } + int cardnb = atoi(s.c_str()); + if (cardnb) + { + add(cardnb); } else { - DebugTrace("could not find Card matching name: " << s); + size_t found = s.find(" *"); + if (found != string::npos) + { + nb = atoi(s.substr(found + 2).c_str()); + s = s.substr(0, found); + } + MTGCard * card = database->getCardByName(s); + if (card) + { + for (int i = 0; i < nb; i++) + { + add(card); + } + } + + else + { + DebugTrace("could not find Card matching name: " << s); + } } } file.close(); diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index d45ccb828..65c1628db 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -1,7 +1,5 @@ #include "PrecompiledHeader.h" -#include "DeckManager.h" -#include "DeckMetaData.h" #include "MTGGameZones.h" #include "Player.h" #include "GameOptions.h" @@ -45,20 +43,10 @@ MTGPlayerCards::MTGPlayerCards(MTGDeck * deck) void MTGPlayerCards::initDeck(MTGDeck * deck) { resetLibrary(); - bool isAI = deck->getFilename().find("baka") != string::npos; - DeckMetaData *deckMeta = DeckManager::GetInstance()->getDeckMetaDataById( deck->meta_id, isAI); - map alternatesMap = deckMeta->getAlternateMappings(); - bool useAlternates = deckMeta->getVictoryPercentage() >= 65; map::iterator it; for (it = deck->cards.begin(); it != deck->cards.end(); it++) { - int cardId = it->first; - if (useAlternates && isAI) - { - if ( alternatesMap.find( cardId ) != alternatesMap.end() ) - cardId = alternatesMap[ cardId ]; - } - MTGCard * card = deck->getCardById(cardId); + MTGCard * card = deck->getCardById(it->first); if (card) { for (int i = 0; i < it->second; i++)