diff --git a/projects/mtg/src/GameStateAwards.cpp b/projects/mtg/src/GameStateAwards.cpp index 4de33e80b..4e9f384a8 100644 --- a/projects/mtg/src/GameStateAwards.cpp +++ b/projects/mtg/src/GameStateAwards.cpp @@ -321,6 +321,7 @@ bool GameStateAwards::enterStats(int option){ } } + SAFE_DELETE(ddw->parent); SAFE_DELETE(ddw); return true; } diff --git a/projects/mtg/src/GameStateDeckViewer.cpp b/projects/mtg/src/GameStateDeckViewer.cpp index bbb4ad2f4..5d7c74ffd 100644 --- a/projects/mtg/src/GameStateDeckViewer.cpp +++ b/projects/mtg/src/GameStateDeckViewer.cpp @@ -44,7 +44,10 @@ GameStateDeckViewer::GameStateDeckViewer(GameApp* parent): GameState(parent) { GameStateDeckViewer::~GameStateDeckViewer() { SAFE_DELETE(bgMusic); - SAFE_DELETE(myDeck); + if(myDeck){ + SAFE_DELETE(myDeck->parent); + SAFE_DELETE(myDeck); + } SAFE_DELETE(myCollection); SAFE_DELETE(filterDeck); SAFE_DELETE(filterCollection); @@ -218,7 +221,10 @@ void GameStateDeckViewer::End() resources.Release(pspIconsTexture); SAFE_DELETE(myCollection); - SAFE_DELETE(myDeck); + if(myDeck){ + SAFE_DELETE(myDeck->parent); + SAFE_DELETE(myDeck); + } SAFE_DELETE(pricelist); SAFE_DELETE(playerdata); SAFE_DELETE(filterDeck); @@ -1409,7 +1415,10 @@ int GameStateDeckViewer::loadDeck(int deckid){ displayed_deck = myCollection; char deckname[256]; sprintf(deckname,"deck%i.txt",deckid); - SAFE_DELETE(myDeck); + if(myDeck){ + SAFE_DELETE(myDeck->parent); + SAFE_DELETE(myDeck); + } myDeck = NEW DeckDataWrapper(NEW MTGDeck(options.profileFile(deckname,"",false,false).c_str(), mParent->collection)); // Check whether the cards in the deck are actually available in the player's collection: diff --git a/projects/mtg/src/GameStateMenu.cpp b/projects/mtg/src/GameStateMenu.cpp index e83a4f43c..536aa5157 100644 --- a/projects/mtg/src/GameStateMenu.cpp +++ b/projects/mtg/src/GameStateMenu.cpp @@ -57,6 +57,7 @@ enum SUBMENUITEM_CLASSIC, SUBMENUITEM_RANDOM1, SUBMENUITEM_RANDOM2, + SUBMENUITEM_PEASANT, }; @@ -452,9 +453,11 @@ void GameStateMenu::Update(float dt) subMenuController->Add(SUBMENUITEM_RANDOM1, "Random 1 Color"); subMenuController->Add(SUBMENUITEM_RANDOM2, "Random 2 Colors"); } + if(true) + subMenuController->Add(SUBMENUITEM_PEASANT, "Peasant's Magic"); subMenuController->Add(SUBMENUITEM_CANCEL, "Cancel"); } - }else{ + }else{ mParent->DoTransition(TRANSITION_FADE,GAME_STATE_DUEL); currentState = MENU_STATE_MAJOR_MAINMENU; } @@ -670,6 +673,12 @@ JLBFont * mFont = resources.GetJLBFont(Constants::MENU_FONT); subMenuController->Close(); currentState = MENU_STATE_MAJOR_DUEL | MENU_STATE_MINOR_SUBMENU_CLOSING; break; + case SUBMENUITEM_PEASANT: + this->hasChosenGameType = 1; + mParent->gameType = GAME_TYPE_PEASANT; + subMenuController->Close(); + currentState = MENU_STATE_MAJOR_DUEL | MENU_STATE_MINOR_SUBMENU_CLOSING; + break; #ifdef TESTSUITE case SUBMENUITEM_TESTSUITE: mParent->players[0] = PLAYER_TYPE_TESTSUITE;