diff --git a/projects/mtg/include/WGui.h b/projects/mtg/include/WGui.h index cc0504a1e..a27562049 100644 --- a/projects/mtg/include/WGui.h +++ b/projects/mtg/include/WGui.h @@ -428,6 +428,7 @@ public: bool isFinished() {return bFinished;}; void ButtonPressed(int controllerId, int controlId); void buildList(); + void setSrc(WSrcCards * wsc); protected: void clearArgs(); void addArg(string display, string code); diff --git a/projects/mtg/src/GameStateDeckViewer.cpp b/projects/mtg/src/GameStateDeckViewer.cpp index 57e00d1da..cc3c13cd0 100644 --- a/projects/mtg/src/GameStateDeckViewer.cpp +++ b/projects/mtg/src/GameStateDeckViewer.cpp @@ -67,11 +67,10 @@ void GameStateDeckViewer::rotateCards(int direction){ loadIndexes(); } void GameStateDeckViewer::rebuildFilters(){ - SAFE_DELETE(filterMenu); - SAFE_DELETE(source); + if(!filterMenu) filterMenu = NEW WGuiFilters("Filter by...",NULL); source = NEW WSrcDeckViewer(myDeck,myCollection); + filterMenu->setSrc(source); if(displayed_deck != myDeck) source->swapSrc(); - filterMenu = NEW WGuiFilters("Filter by...",source); filterMenu->Finish(true); } void GameStateDeckViewer::updateFilters(){ @@ -323,7 +322,12 @@ void GameStateDeckViewer::Update(float dt) break; case JGE_BTN_CTRL : mStage = STAGE_FILTERS; - rebuildFilters(); + if(!filterMenu){ + filterMenu = NEW WGuiFilters("Filter by...",NULL); + source = NEW WSrcDeckViewer(myDeck,myCollection); + filterMenu->setSrc(source); + if(displayed_deck != myDeck) source->swapSrc(); + } filterMenu->Entering(JGE_BTN_NONE); break; case JGE_BTN_PREV : @@ -407,7 +411,7 @@ void GameStateDeckViewer::Update(float dt) JButton key = mEngine->ReadButton(); if (filterMenu) { if (key == JGE_BTN_CTRL) { - useFilter = 0; + //useFilter = 0; filterMenu->Finish(true); filterMenu->Update(dt); loadIndexes(); @@ -1431,6 +1435,7 @@ int GameStateDeckViewer::loadDeck(int deckid){ } myDeck->Sort(WSrcCards::SORT_ALPHA); + SAFE_DELETE(filterMenu); rebuildFilters(); loadIndexes(); return 1; diff --git a/projects/mtg/src/WGui.cpp b/projects/mtg/src/WGui.cpp index d7aae5fa6..8daec08d4 100644 --- a/projects/mtg/src/WGui.cpp +++ b/projects/mtg/src/WGui.cpp @@ -1413,6 +1413,10 @@ string WGuiFilters::getCode(){ } return res; } +void WGuiFilters::setSrc(WSrcCards * wsc){ + SAFE_DELETE(source); + source = wsc; +} void WGuiFilters::Update(float dt){ if(subMenu && !subMenu->closed) subMenu->Update(dt); @@ -1623,9 +1627,16 @@ void WGuiFilterItem::updateValue(){ mParent->addArg("Legendary","t:Legendary;"); mParent->addArg("Sorcery","t:Sorcery;"); }else if(filterType == FILTER_SUBTYPE){ + vector stlist; for(int i=Subtypes::LAST_TYPE+1;;i++){ string s = Subtypes::subtypesList->find(i); if(s == "") break; + if(s.find(" ") != string::npos) continue; + stlist.push_back(s); + } + std::sort(stlist.begin(),stlist.end()); + for(size_t t=0;taddArg(s,buf); }