Jeck - Daily build & fix to r1895. Now the deck editor does what I thought it did.

This commit is contained in:
wagic.jeck
2010-02-17 15:16:59 +00:00
parent 8f130856da
commit 4fd38766b1
5 changed files with 13 additions and 19 deletions

View File

@@ -19,8 +19,6 @@ private:
class WCardFilter{ class WCardFilter{
public: public:
WCardFilter() {}; WCardFilter() {};
virtual void recolor(int mtgcolor) {};
virtual bool filtersColor() {return false;};
virtual ~WCardFilter() {}; virtual ~WCardFilter() {};
virtual bool isMatch(MTGCard * c) {return true;}; virtual bool isMatch(MTGCard * c) {return true;};
virtual string getCode() = 0; virtual string getCode() = 0;
@@ -31,10 +29,8 @@ class WCFBranch: public WCardFilter{
public: public:
WCFBranch(WCardFilter * a, WCardFilter * b) {lhs=a;rhs=b;}; WCFBranch(WCardFilter * a, WCardFilter * b) {lhs=a;rhs=b;};
~WCFBranch() {SAFE_DELETE(lhs); SAFE_DELETE(rhs);}; ~WCFBranch() {SAFE_DELETE(lhs); SAFE_DELETE(rhs);};
virtual bool filtersColor() {return (rhs->filtersColor() || lhs->filtersColor());};
virtual bool isMatch(MTGCard * c) = 0; virtual bool isMatch(MTGCard * c) = 0;
virtual string getCode() = 0; virtual string getCode() = 0;
virtual void recolor(int mtgcolor) {rhs->recolor(mtgcolor);lhs->recolor(mtgcolor);};
virtual WCardFilter * Right(){return rhs;}; virtual WCardFilter * Right(){return rhs;};
virtual WCardFilter * Left(){return lhs;}; virtual WCardFilter * Left(){return lhs;};
protected: protected:
@@ -61,8 +57,6 @@ class WCFilterGROUP: public WCardFilter{
public: public:
WCFilterGROUP(WCardFilter * _k) {kid = _k;}; WCFilterGROUP(WCardFilter * _k) {kid = _k;};
~WCFilterGROUP() {SAFE_DELETE(kid);}; ~WCFilterGROUP() {SAFE_DELETE(kid);};
virtual void recolor(int mtgcolor) {kid->recolor(mtgcolor);};
virtual bool filtersColor() {return (kid->filtersColor());};
bool isMatch(MTGCard *c) {return kid->isMatch(c);}; bool isMatch(MTGCard *c) {return kid->isMatch(c);};
string getCode(); string getCode();
float filterFee() {return kid->filterFee();}; float filterFee() {return kid->filterFee();};
@@ -74,8 +68,6 @@ class WCFilterNOT: public WCardFilter{
public: public:
WCFilterNOT(WCardFilter * _k) {kid = _k;}; WCFilterNOT(WCardFilter * _k) {kid = _k;};
~WCFilterNOT() {SAFE_DELETE(kid);}; ~WCFilterNOT() {SAFE_DELETE(kid);};
virtual void recolor(int mtgcolor) {kid->recolor(mtgcolor);};
virtual bool filtersColor() {return (kid->filtersColor());};
bool isMatch(MTGCard *c) {return !kid->isMatch(c);}; bool isMatch(MTGCard *c) {return !kid->isMatch(c);};
string getCode(); string getCode();
protected: protected:
@@ -113,11 +105,9 @@ protected:
class WCFilterColor: public WCardFilter{ class WCFilterColor: public WCardFilter{
public: public:
WCFilterColor(int _c) {color = _c;}; WCFilterColor(int _c) {color = _c;};
virtual void recolor(int mtgcolor) {color = mtgcolor;};
WCFilterColor(string arg); WCFilterColor(string arg);
bool isMatch(MTGCard * c); bool isMatch(MTGCard * c);
string getCode(); string getCode();
bool filtersColor() {return true;};
float filterFee() {return 0.2f;}; float filterFee() {return 0.2f;};
protected: protected:
int color; int color;
@@ -134,8 +124,6 @@ public:
WCFilterProducesColor(int _c) : WCFilterColor(_c) {}; WCFilterProducesColor(int _c) : WCFilterColor(_c) {};
WCFilterProducesColor(string arg) : WCFilterColor(arg) {}; WCFilterProducesColor(string arg) : WCFilterColor(arg) {};
bool isMatch(MTGCard * c); bool isMatch(MTGCard * c);
void recolor(int mtgcolor) {return;};
bool filtersColor() {return false;}; //We only want to know about filtering against card color, not produced.
string getCode(); string getCode();
}; };
class WCFilterNumeric: public WCardFilter{ class WCFilterNumeric: public WCardFilter{

View File

@@ -434,7 +434,7 @@ protected:
vector< pair<string,string> > tempArgs; //TODO FIXME this is inefficient vector< pair<string,string> > tempArgs; //TODO FIXME this is inefficient
bool bFinished; bool bFinished;
string priorFilter; string priorFilter;
int recolorTo, priorRecolor; int recolorTo;
WSrcCards* source; WSrcCards* source;
SimpleMenu* subMenu; SimpleMenu* subMenu;
WGuiList * list; WGuiList * list;

View File

@@ -132,6 +132,10 @@ void GameStateDeckViewer::Start()
myCollection = NEW DeckDataWrapper(playerdata->collection); myCollection = NEW DeckDataWrapper(playerdata->collection);
myCollection->Sort(WSrcCards::SORT_ALPHA); myCollection->Sort(WSrcCards::SORT_ALPHA);
displayed_deck = myCollection; displayed_deck = myCollection;
filterDeck = NEW WGuiFilters("Filter by...",myDeck);
filterDeck->Finish();
filterCollection = NEW WGuiFilters("Filter by...",myCollection);
filterCollection->Finish();
//Build menu. //Build menu.
menu = NEW SimpleMenu(11,this,Constants::MENU_FONT,SCREEN_WIDTH/2-150,20); menu = NEW SimpleMenu(11,this,Constants::MENU_FONT,SCREEN_WIDTH/2-150,20);
menu->Add(22,"Filter by..."); menu->Add(22,"Filter by...");
@@ -1482,6 +1486,7 @@ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId)
goa->giveAward(); goa->giveAward();
} }
options.save(); options.save();
SAFE_DELETE(filterCollection);
SAFE_DELETE(myCollection); SAFE_DELETE(myCollection);
myCollection = NEW DeckDataWrapper(playerdata->collection); myCollection = NEW DeckDataWrapper(playerdata->collection);
myCollection->Sort(WSrcCards::SORT_ALPHA); myCollection->Sort(WSrcCards::SORT_ALPHA);

View File

@@ -1326,18 +1326,21 @@ bool WGuiFilters::Finish(){
string src; string src;
if(source){ if(source){
src = getCode(); src = getCode();
if(priorFilter == src && recolorTo == priorRecolor) if(priorFilter == src && recolorTo < 0)
return false; return false;
source->clearFilters(); source->clearFilters();
if(src.size()){ if(src.size()){
WCFilterFactory * wc = WCFilterFactory::GetInstance(); WCFilterFactory * wc = WCFilterFactory::GetInstance();
WCardFilter * f = wc->Construct(src); WCardFilter * f = wc->Construct(src);
if(recolorTo > -1 && recolorTo < Constants::MTG_NB_COLORS){ if(recolorTo > -1 && recolorTo < Constants::MTG_NB_COLORS){
if(!f->filtersColor()) f = NEW WCFilterAND(f,NEW WCFilterColor(recolorTo));
f = NEW WCFilterAND(f,NEW WCFilterColor(recolorTo));
f->recolor(recolorTo);
} }
source->addFilter(f); source->addFilter(f);
}else {
if(recolorTo > -1 && recolorTo < Constants::MTG_NB_COLORS){
WCardFilter * f = NEW WCFilterColor(recolorTo);
source->addFilter(f);
}
} }
if(!source->Size()){ if(!source->Size()){
source->clearFilters(); //TODO: Pop a "No results found" warning source->clearFilters(); //TODO: Pop a "No results found" warning
@@ -1382,11 +1385,9 @@ WGuiFilters::WGuiFilters(string header, WSrcCards * src) : WGuiItem(header) {
bFinished = false; bFinished = false;
source = src; source = src;
recolorTo = -1; recolorTo = -1;
priorRecolor = -1;
buildList(); buildList();
} }
void WGuiFilters::recolorFilter(int color){ void WGuiFilters::recolorFilter(int color){
priorRecolor = recolorTo;
recolorTo = color; recolorTo = color;
} }
string WGuiFilters::getCode(){ string WGuiFilters::getCode(){