Jeck - More deck editor fixes, quick hack to subtypes filter. I've noticed some slowdown while scrolling up/down in the deck editor, I think this is due to some recent changes that removed a few of the filter system's optimizations. I'll re-implement them tonight.

This commit is contained in:
wagic.jeck
2010-02-19 23:06:44 +00:00
parent 4254d8cb9f
commit 5dd2388b6f
3 changed files with 22 additions and 5 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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<string> 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;t<stlist.size();t++){
string s=stlist[t];
char buf[1024]; sprintf(buf,"t:%s;",s.c_str());
mParent->addArg(s,buf);
}