diff --git a/projects/mtg/include/DeckMenu.h b/projects/mtg/include/DeckMenu.h index 7b5b17c9d..8757609d6 100644 --- a/projects/mtg/include/DeckMenu.h +++ b/projects/mtg/include/DeckMenu.h @@ -46,7 +46,6 @@ protected: string getDescription(); string getMetaInformation(); DeckMetaData *mSelectedDeck; - int mSelectedDeckId; bool mShowDetailsScreen; bool mAlwaysShowDetailsButton; bool mClosed; @@ -55,7 +54,15 @@ public: VerticalTextScroller * mScroller; bool mAutoTranslate; float mSelectionTargetY; - + + int getSelectedDeckId() const + { + return mSelectedDeck->getDeckId(); + } + + void selectDeck(int deckId, bool isAi); + void selectRandomDeck(bool isAi); + //used for detailed info button JQuadPtr pspIcons[8]; JTexture * pspIconsTexture; @@ -68,7 +75,6 @@ public: bool showDetailsScreen(); virtual bool isClosed() const { return mClosed; } - virtual int getSelectedDeckId() const { return mSelectedDeckId; } virtual void Render(); virtual void Update(float dt); diff --git a/projects/mtg/src/DeckMenu.cpp b/projects/mtg/src/DeckMenu.cpp index c1e9a0cb0..a85132cb2 100644 --- a/projects/mtg/src/DeckMenu.cpp +++ b/projects/mtg/src/DeckMenu.cpp @@ -3,6 +3,7 @@ #include "DeckMenu.h" #include "DeckMenuItem.h" #include "DeckMetaData.h" +#include "DeckManager.h" #include "InteractiveButton.h" #include "JTypes.h" #include "GameApp.h" @@ -65,8 +66,6 @@ JGuiController(JGE::GetInstance(), id, listener), fontId(fontId), mShowDetailsSc statsHeight = 50; statsWidth = 227; - mSelectedDeckId = startIndex; - avatarX = 232; avatarY = 11; @@ -213,6 +212,21 @@ void DeckMenu::initMenuItems() #endif } +void DeckMenu::selectRandomDeck(bool isAi) +{ + DeckManager *deckManager = DeckManager::GetInstance(); + vector *deckList = isAi ? deckManager->getAIDeckOrderList() : deckManager->getPlayerDeckOrderList(); + int random = (WRand() * 1000) % deckList->size(); + selectDeck( random, isAi ); +} + +void DeckMenu::selectDeck(int deckId, bool isAi) +{ + DeckManager *deckManager = DeckManager::GetInstance(); + vector *deckList = isAi ? deckManager->getAIDeckOrderList() : deckManager->getPlayerDeckOrderList(); + mSelectedDeck = deckList->at(deckId); +} + void DeckMenu::Render() { JRenderer * renderer = JRenderer::GetInstance(); @@ -243,7 +257,6 @@ void DeckMenu::Render() if (currentMenuItem->hasFocus()) { - mSelectedDeckId = i; mSelectedDeck = metaData; WFont *mainFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT); diff --git a/projects/mtg/src/GameStateDuel.cpp b/projects/mtg/src/GameStateDuel.cpp index 47b266bbf..c6b6ba09f 100644 --- a/projects/mtg/src/GameStateDuel.cpp +++ b/projects/mtg/src/GameStateDuel.cpp @@ -688,7 +688,7 @@ void GameStateDuel::Render() { opponentMenu->Render(); // display the selected player deck name too - string selectedPlayerDeckName = "Player Deck: " + deckmenu->getSelectedDeck()->getName(); + string selectedPlayerDeckName = "Player Deck: " + game->players[0]->deckName; mFont->DrawString( selectedPlayerDeckName.c_str(), 30, 40); } else if (deckmenu && !deckmenu->isClosed()) deckmenu->Render(); @@ -831,9 +831,9 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId) if (controlId == MENUITEM_RANDOM_PLAYER) // Random Player Deck Selection { - vector * playerDeckList = deckManager->getPlayerDeckOrderList(); - deckNumber = playerDeckList->at(WRand() % (playerDeckList->size()))->getDeckId(); - game->loadPlayer(0, mParent->players[0], deckNumber, premadeDeck); + deckmenu->selectRandomDeck(false); + + game->loadPlayer(0, mParent->players[0], deckmenu->getSelectedDeckId(), premadeDeck); deckmenu->Close(); setGamePhase(DUEL_STATE_CHOOSE_DECK2_TO_PLAY); break;