Jeck - Daily build & fix to r1895. Now the deck editor does what I thought it did.
This commit is contained in:
Binary file not shown.
@@ -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{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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(){
|
||||||
|
|||||||
Reference in New Issue
Block a user