Jeck - Some cleanup, fixed a double-deletion error in GameStateDeckViewer (when unlocking all cards).
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user