Jeck - Some cleanup, fixed a double-deletion error in GameStateDeckViewer (when unlocking all cards).

This commit is contained in:
wagic.jeck
2010-02-15 23:29:54 +00:00
parent 92979fb184
commit 62609ee1b1
4 changed files with 37 additions and 31 deletions
+1
View File
@@ -28,6 +28,7 @@ class DeckDataWrapper: public WSrcDeck {
public: public:
MTGDeck * parent; MTGDeck * parent;
int counts[Constants::MTG_NB_COLORS]; int counts[Constants::MTG_NB_COLORS];
unsigned short minCards; //Fewest number of copies of any given card in the deck.
DeckDataWrapper(MTGDeck * deck); DeckDataWrapper(MTGDeck * deck);
+1 -2
View File
@@ -111,8 +111,8 @@ private:
WGuiFilters * filterDeck; WGuiFilters * filterDeck;
WGuiFilters * filterCollection; WGuiFilters * filterCollection;
SimpleMenu * welcome_menu; SimpleMenu * welcome_menu;
SimpleMenu * subMenu;
SimpleMenu * menu; SimpleMenu * menu;
SimpleMenu * sellMenu;
PriceList* pricelist; PriceList* pricelist;
PlayerData * playerdata; PlayerData * playerdata;
int price; int price;
@@ -121,7 +121,6 @@ private:
DeckDataWrapper * myCollection; DeckDataWrapper * myCollection;
MTGCard * cardIndex[7]; MTGCard * cardIndex[7];
int hudAlpha; int hudAlpha;
int delSellMenu;
string newDeckname; string newDeckname;
StatsWrapper stw; StatsWrapper stw;
bool mSwitching; bool mSwitching;
+4
View File
@@ -45,6 +45,7 @@ void DeckDataWrapper::updateCounts(){
map<int,int>::iterator it; map<int,int>::iterator it;
for(int c=0;c<Constants::MTG_NB_COLORS;c++) for(int c=0;c<Constants::MTG_NB_COLORS;c++)
counts[c] = 0; counts[c] = 0;
minCards = 65500;
for(int i=0;i<Size(true);i++){ for(int i=0;i<Size(true);i++){
for(int c=0;c<Constants::MTG_NB_COLORS;c++){ for(int c=0;c<Constants::MTG_NB_COLORS;c++){
@@ -53,6 +54,9 @@ void DeckDataWrapper::updateCounts(){
it = copies.find(card->getMTGId()); it = copies.find(card->getMTGId());
if(it != copies.end()) if(it != copies.end())
counts[c]+=it->second; counts[c]+=it->second;
if(it->second < minCards)
minCards = it->second;
} }
} }
} }
+31 -29
View File
@@ -40,6 +40,11 @@ GameStateDeckViewer::GameStateDeckViewer(GameApp* parent): GameState(parent) {
myDeck = NULL; myDeck = NULL;
filterDeck = NULL; filterDeck = NULL;
filterCollection = NULL; filterCollection = NULL;
hudAlpha = 0;
subMenu = NULL;
mRotation = 0;
mSlide = 0;
mAlpha = 255;
} }
GameStateDeckViewer::~GameStateDeckViewer() { GameStateDeckViewer::~GameStateDeckViewer() {
@@ -66,6 +71,7 @@ void GameStateDeckViewer::rotateCards(int direction){
loadIndexes(); loadIndexes();
} }
void GameStateDeckViewer::updateFilters(){ void GameStateDeckViewer::updateFilters(){
if(!displayed_deck) return;
displayed_deck->clearFilters(); displayed_deck->clearFilters();
int i = (displayed_deck == myDeck); int i = (displayed_deck == myDeck);
@@ -126,7 +132,7 @@ void GameStateDeckViewer::updateDecks(){
welcome_menu = NEW SimpleMenu(10,this,Constants::MENU_FONT,20,20); welcome_menu = NEW SimpleMenu(10,this,Constants::MENU_FONT,20,20);
welcome_menu->Add(nbDecks+1, _("--NEW--").c_str()); welcome_menu->Add(nbDecks+1, _("--NEW--").c_str());
if(options[Options::CHEATMODE].number) if(options[Options::CHEATMODE].number && (!myCollection || myCollection->minCards < 4))
welcome_menu->Add(-12,"--UNLOCK ALL--"); welcome_menu->Add(-12,"--UNLOCK ALL--");
nbDecks = fillDeckMenu(welcome_menu,options.profileFile()); nbDecks = fillDeckMenu(welcome_menu,options.profileFile());
deckNum = 0; deckNum = 0;
@@ -139,16 +145,21 @@ void GameStateDeckViewer::Start()
{ {
hudAlpha = 0; hudAlpha = 0;
mSwitching = false; mSwitching = false;
delSellMenu = 0; subMenu = NULL;
myDeck = NULL;
mStage = STAGE_WELCOME;
mRotation = 0;
mSlide = 0;
mAlpha = 255;
last_user_activity = NO_USER_ACTIVITY_HELP_DELAY + 1;
onScreenTransition = 0;
pricelist = NEW PriceList(RESPATH"/settings/prices.dat",mParent->collection); pricelist = NEW PriceList(RESPATH"/settings/prices.dat",mParent->collection);
playerdata = NEW PlayerData(mParent->collection); playerdata = NEW PlayerData(mParent->collection);
sellMenu = NULL; myCollection = NEW DeckDataWrapper(playerdata->collection);
MTGDeck * myC = NEW MTGDeck(options.profileFile(PLAYER_COLLECTION).c_str(), mParent->collection);
myCollection = NEW DeckDataWrapper(myC);
myCollection->Sort(WSrcCards::SORT_ALPHA); myCollection->Sort(WSrcCards::SORT_ALPHA);
displayed_deck = myCollection; displayed_deck = myCollection;
myDeck = NULL; //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...");
menu->Add(2,"Switch decks without saving"); menu->Add(2,"Switch decks without saving");
@@ -158,7 +169,7 @@ void GameStateDeckViewer::Start()
menu->Add(4,"Cancel"); menu->Add(4,"Cancel");
//icon images //Icons
mIcons[Constants::MTG_COLOR_ARTIFACT] = resources.GetQuad("c_artifact"); mIcons[Constants::MTG_COLOR_ARTIFACT] = resources.GetQuad("c_artifact");
mIcons[Constants::MTG_COLOR_LAND] = resources.GetQuad("c_land"); mIcons[Constants::MTG_COLOR_LAND] = resources.GetQuad("c_land");
mIcons[Constants::MTG_COLOR_WHITE] = resources.GetQuad("c_white"); mIcons[Constants::MTG_COLOR_WHITE] = resources.GetQuad("c_white");
@@ -196,15 +207,7 @@ void GameStateDeckViewer::Start()
} }
} }
mStage = STAGE_WELCOME;
mRotation = 0;
mSlide = 0;
mAlpha = 255;
loadIndexes(); loadIndexes();
last_user_activity = NO_USER_ACTIVITY_HELP_DELAY + 1;
onScreenTransition = 0;
mEngine->ResetInput(); mEngine->ResetInput();
JRenderer::GetInstance()->EnableVSync(true); JRenderer::GetInstance()->EnableVSync(true);
} }
@@ -219,10 +222,10 @@ void GameStateDeckViewer::End()
} }
SAFE_DELETE(welcome_menu); SAFE_DELETE(welcome_menu);
SAFE_DELETE(menu); SAFE_DELETE(menu);
SAFE_DELETE(subMenu);
resources.Release(pspIconsTexture); resources.Release(pspIconsTexture);
if(myCollection){ if(myCollection){
SAFE_DELETE(myCollection->parent);
SAFE_DELETE(myCollection); SAFE_DELETE(myCollection);
} }
if(myDeck){ if(myDeck){
@@ -275,11 +278,10 @@ void GameStateDeckViewer::Update(float dt)
} }
hudAlpha = (float) 255-(last_user_activity * 500); hudAlpha = (float) 255-(last_user_activity * 500);
if (hudAlpha < 0) hudAlpha = 0; if (hudAlpha < 0) hudAlpha = 0;
if (sellMenu){ if (subMenu){
sellMenu->Update(dt); subMenu->Update(dt);
if (delSellMenu){ if (subMenu->closed){
SAFE_DELETE(sellMenu); SAFE_DELETE(subMenu);
delSellMenu = 0;
} }
return; return;
} }
@@ -324,16 +326,16 @@ void GameStateDeckViewer::Update(float dt)
break; break;
case JGE_BTN_SEC : case JGE_BTN_SEC :
last_user_activity = 0; last_user_activity = 0;
SAFE_DELETE(sellMenu); SAFE_DELETE(subMenu);
char buffer[4096]; char buffer[4096];
{ {
MTGCard * card = cardIndex[2]; MTGCard * card = cardIndex[2];
if (card && displayed_deck->count(card)){ if (card && displayed_deck->count(card)){
price = pricelist->getSellPrice(card->getMTGId()); price = pricelist->getSellPrice(card->getMTGId());
sprintf(buffer,"%s : %i %s",_(card->data->getName()).c_str(),price,_("credits").c_str()); sprintf(buffer,"%s : %i %s",_(card->data->getName()).c_str(),price,_("credits").c_str());
sellMenu = NEW SimpleMenu(2,this,Constants::MAIN_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,buffer); subMenu = NEW SimpleMenu(2,this,Constants::MAIN_FONT,SCREEN_WIDTH-300,SCREEN_HEIGHT/2,buffer);
sellMenu->Add(20,"Yes"); subMenu->Add(20,"Yes");
sellMenu->Add(21,"No","",true); subMenu->Add(21,"No","",true);
} }
} }
stw.needUpdate = true; stw.needUpdate = true;
@@ -1381,7 +1383,7 @@ void GameStateDeckViewer::Render() {
if (mStage == STAGE_MENU){ if (mStage == STAGE_MENU){
menu->Render(); menu->Render();
} }
if (sellMenu) sellMenu->Render(); if (subMenu) subMenu->Render();
if(displayed_deck == myDeck){ if(displayed_deck == myDeck){
if(filterDeck && !filterDeck->isFinished()) if(filterDeck && !filterDeck->isFinished())
@@ -1511,7 +1513,7 @@ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId)
myCollection->Sort(WSrcCards::SORT_ALPHA); myCollection->Sort(WSrcCards::SORT_ALPHA);
displayed_deck = myCollection; displayed_deck = myCollection;
loadIndexes(); loadIndexes();
mStage = STAGE_WAITING; mStage = STAGE_WELCOME;
break; break;
} }
loadDeck(controlId); loadDeck(controlId);
@@ -1575,7 +1577,7 @@ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId)
} }
} }
case 21: case 21:
delSellMenu = 1; subMenu->Close();
break; break;
} }
} }