From cf03d4cc64376b9bdebf80c1734eac8a374f2179 Mon Sep 17 00:00:00 2001 From: "wagic.jeck" Date: Wed, 10 Feb 2010 15:48:38 +0000 Subject: [PATCH] Jeck - fix to issue 318. --- projects/mtg/include/GameStateShop.h | 1 + projects/mtg/include/WGui.h | 3 ++- projects/mtg/src/GameStateShop.cpp | 6 ++++-- projects/mtg/src/WGui.cpp | 14 ++++++++++---- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/projects/mtg/include/GameStateShop.h b/projects/mtg/include/GameStateShop.h index fad8d0c63..f1ce1c391 100644 --- a/projects/mtg/include/GameStateShop.h +++ b/projects/mtg/include/GameStateShop.h @@ -59,6 +59,7 @@ class GameStateShop: public GameState, public JGuiListener PriceList * pricelist; PlayerData * playerdata; bool mTouched; + bool needLoad; int mPrices[SHOP_ITEMS]; int mCounts[SHOP_ITEMS]; int mInventory[SHOP_ITEMS]; diff --git a/projects/mtg/include/WGui.h b/projects/mtg/include/WGui.h index fdce1e9fc..59b624bf5 100644 --- a/projects/mtg/include/WGui.h +++ b/projects/mtg/include/WGui.h @@ -423,7 +423,7 @@ public: void addColumn(); bool isAvailable(int type); bool isAvailableCode(string code); - void Finish(); + bool Finish(); //Returns true if card set reasonably expected to be changed. bool isFinished() {return bFinished;}; void ButtonPressed(int controllerId, int controlId); void buildList(); @@ -432,6 +432,7 @@ protected: void addArg(string display, string code); vector< pair > tempArgs; //TODO FIXME this is inefficient bool bFinished; + string priorFilter; WSrcCards* source; SimpleMenu* subMenu; WGuiList * list; diff --git a/projects/mtg/src/GameStateShop.cpp b/projects/mtg/src/GameStateShop.cpp index dbce4d2cd..8642db26c 100644 --- a/projects/mtg/src/GameStateShop.cpp +++ b/projects/mtg/src/GameStateShop.cpp @@ -63,6 +63,7 @@ void GameStateShop::Start(){ mTouched = false; mStage = STAGE_FADE_IN; mElapsed = 0; + needLoad = true; booster = NULL; srcCards = NEW WSrcUnlockedCards(0); srcCards->setElapsed(15); @@ -467,12 +468,13 @@ void GameStateShop::Update(float dt) } if(filterMenu){ if(btn == PSP_CTRL_SELECT){ - filterMenu->Finish(); + needLoad = filterMenu->Finish(); filterMenu->Update(dt); return; } if(filterMenu->isFinished()){ - load(); + if(needLoad) + load(); mStage = STAGE_SHOP_SHOP; }else{ filterMenu->CheckUserInput(btn); diff --git a/projects/mtg/src/WGui.cpp b/projects/mtg/src/WGui.cpp index 14a68c05a..ba984167a 100644 --- a/projects/mtg/src/WGui.cpp +++ b/projects/mtg/src/WGui.cpp @@ -1299,18 +1299,24 @@ WGuiListRow::WGuiListRow(string n, WSyncable * s) : WGuiList(n,s) { height = 20; } //WGuiFilterUI -void WGuiFilters::Finish(){ +bool WGuiFilters::Finish(){ bFinished = true; + string src; if(source){ - string src = getCode(); + src = getCode(); + if(priorFilter == src) + return false; source->clearFilters(); if(src.size()){ WCFilterFactory * wc = WCFilterFactory::GetInstance(); source->addFilter(wc->Construct(src)); } - if(!source->Size()) - source->clearFilters(); //TODO: Pop a "No results found" warning. + if(!source->Size()){ + source->clearFilters(); //TODO: Pop a "No results found" warning + } } + priorFilter = src; + return true; } void WGuiFilters::ButtonPressed(int controllerId, int controlId){ if(controllerId == -102){