diff --git a/projects/mtg/include/WDataSrc.h b/projects/mtg/include/WDataSrc.h index 6022a7650..79e8b952c 100644 --- a/projects/mtg/include/WDataSrc.h +++ b/projects/mtg/include/WDataSrc.h @@ -55,6 +55,12 @@ protected: }; class WSrcCards: public WDataSource{ +protected: + vector cards; + vector validated; + WCardFilter * filtersRoot; + float mDelay; + public: WSrcCards(float delay=0.2); ~WSrcCards(); @@ -93,6 +99,7 @@ public: //We put it into something else virtual int addRandomCards(MTGDeck * i, int howmany=1); virtual int addToDeck(MTGDeck * i, int num=-1); //Returns num that didn't add + virtual WCardFilter * getFiltersRoot(){return filtersRoot;}; enum { MAX_CYCLES = 4, //How many cycles to search, for addToDeck @@ -100,11 +107,7 @@ public: SORT_ALPHA, SORT_RARITY }; -protected: - vector cards; - vector validated; - WCardFilter * filtersRoot; - float mDelay; + }; class WSrcDeckViewer: public WSrcCards{ @@ -118,6 +121,7 @@ public: JQuad * getThumb(int offset=0) {return active->getThumb(offset);}; MTGCard * getCard(int offset=0, bool ignore=false) {return active->getCard(offset,ignore);}; int Size(bool all=false) {return active->Size();}; + WCardFilter * getfiltersRoot() {return active->getFiltersRoot();}; void Shuffle() {active->Shuffle();}; bool thisCard(int mtgid) {return active->thisCard(mtgid);}; bool next() {return active->next();}; diff --git a/projects/mtg/src/GameStateDeckViewer.cpp b/projects/mtg/src/GameStateDeckViewer.cpp index bdf687263..0bf181bc1 100644 --- a/projects/mtg/src/GameStateDeckViewer.cpp +++ b/projects/mtg/src/GameStateDeckViewer.cpp @@ -440,9 +440,10 @@ void GameStateDeckViewer::renderOnScreenBasicInfo(){ int allCopies, nowCopies; nowCopies = displayed_deck->getCount(WSrcDeck::FILTERED_COPIES); allCopies = displayed_deck->getCount(WSrcDeck::UNFILTERED_COPIES); + WCardFilter * wc = displayed_deck->getFiltersRoot(); - if(allCopies != nowCopies) - sprintf(buffer, "%s %i of %i cards (%i unique)", (displayed_deck == myDeck) ? "DECK: " : " ", nowCopies,allCopies, displayed_deck->getCount(WSrcDeck::FILTERED_UNIQUE)); + if(wc) + sprintf(buffer, "%s %i of %i cards (%i unique)", (displayed_deck == myDeck) ? "DECK: " : " ", nowCopies,allCopies, displayed_deck->getCount(WSrcDeck::FILTERED_UNIQUE)); else sprintf(buffer, "%s%i cards (%i unique)", (displayed_deck == myDeck) ? "DECK: " : " " , allCopies, displayed_deck->getCount(WSrcDeck::UNFILTERED_UNIQUE)); float w = mFont->GetStringWidth(buffer); @@ -1067,7 +1068,7 @@ void GameStateDeckViewer::updateStats() { } for(int ic=0;icSize(true);ic++){ - current = myDeck->getCard(ic); + current = myDeck->getCard(ic,true); currentCost = current->data->getManaCost(); convertedCost = currentCost->getConvertedCost(); currentCount = myDeck->count(current); diff --git a/projects/mtg/src/WDataSrc.cpp b/projects/mtg/src/WDataSrc.cpp index 71052a63f..54fe958cb 100644 --- a/projects/mtg/src/WDataSrc.cpp +++ b/projects/mtg/src/WDataSrc.cpp @@ -407,12 +407,12 @@ void WSrcDeck::addCount(MTGCard * c, int qty){ if(matchesFilters(c)){ counts[FILTERED_COPIES]+=qty; - if(qty > 1 && cp != copies.end() && (*cp).second == qty ) counts[FILTERED_UNIQUE]++; - else if(qty < 1 && (cp == copies.end() || (*cp).second == 0) ) counts[FILTERED_UNIQUE]--; + if(qty > 0 && cp != copies.end() && (*cp).second == qty ) counts[FILTERED_UNIQUE]++; + else if(qty < 0 && (cp == copies.end() || (*cp).second == 0) ) counts[FILTERED_UNIQUE]--; } counts[UNFILTERED_COPIES] += qty; - if(qty > 1 && cp != copies.end() && (*cp).second == qty ) counts[UNFILTERED_UNIQUE]++; - else if(qty < 1 && (cp == copies.end() || (*cp).second == 0) ) counts[UNFILTERED_UNIQUE]--; + if(qty > 0 && cp != copies.end() && (*cp).second == qty ) counts[UNFILTERED_UNIQUE]++; + else if(qty < 0 && (cp == copies.end() || (*cp).second == 0) ) counts[UNFILTERED_UNIQUE]--; for(int i=Constants::MTG_COLOR_ARTIFACT;i<=Constants::MTG_COLOR_LAND;i++) if (c->data->hasColor(i)) counts[i]+= qty; if(counts[UNFILTERED_MIN_COPIES] < 0 || qty < counts[UNFILTERED_MIN_COPIES]) counts[UNFILTERED_MIN_COPIES] = qty;