diff --git a/projects/mtg/src/GameState.cpp b/projects/mtg/src/GameState.cpp index 4a1c4b386..abf002fd7 100644 --- a/projects/mtg/src/GameState.cpp +++ b/projects/mtg/src/GameState.cpp @@ -5,7 +5,7 @@ #include "../include/SimpleMenu.h" #include "../include/DeckStats.h" #include "../include/DeckMetaData.h" - +#include int GameState::fillDeckMenu(SimpleMenu * _menu, string path, string smallDeckPrefix, Player * statsPlayer){ DeckMetaDataList * metas = DeckMetaDataList::decksMetaData; @@ -102,6 +102,8 @@ int GameState::fillDeckMenu(vector * deckIdList, SimpleMenu * _menu, string deckNameVector.sort(); int deckNumber = 1; + deckIdList->clear(); + for (list::iterator i = deckNameVector.begin(); i != deckNameVector.end(); i++) { string deckName = *i; diff --git a/projects/mtg/src/GameStateDeckViewer.cpp b/projects/mtg/src/GameStateDeckViewer.cpp index 6428a8e9f..dd4d3a1c2 100644 --- a/projects/mtg/src/GameStateDeckViewer.cpp +++ b/projects/mtg/src/GameStateDeckViewer.cpp @@ -104,8 +104,8 @@ void GameStateDeckViewer::switchDisplay(){ void GameStateDeckViewer::updateDecks(){ SAFE_DELETE(welcome_menu); welcome_menu = NEW SimpleMenu(10,this,Constants::MENU_FONT,20,20); - - nbDecks = fillDeckMenu(welcome_menu,options.profileFile()); + DeckManager * deckManager = DeckManager::GetInstance(); + nbDecks = fillDeckMenu( deckManager->getPlayerDeckOrderList(), welcome_menu,options.profileFile()); deckNum = 0; newDeckname = ""; welcome_menu->Add(nbDecks+1, _("--NEW--").c_str()); @@ -1431,6 +1431,7 @@ int GameStateDeckViewer::loadDeck(int deckid){ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId) { int deckIdNumber = controlId; + int deckListSize = 0; DeckManager *deckManager = DeckManager::GetInstance(); vector * deckList; switch(controllerId){ @@ -1461,15 +1462,15 @@ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId) mStage = STAGE_WELCOME; break; } - loadDeck(deckIdNumber); mStage = STAGE_WAITING; - deckNum = controlId; deckList = deckManager->getPlayerDeckOrderList(); - //if (deckList->size() > 0 && controlId < deckList->size()) removed this hopefully with no side effects due to not being able to compile for psp because of sighed and unsigned int comparison. - // deckIdNumber = deckList->at(controlId); - /*else*/ - - deckIdNumber = controlId; + deckListSize = deckList->size(); + + if (deckListSize > 0 && controlId < deckListSize) + deckIdNumber = deckList->at(controlId - 1); + else + deckIdNumber = controlId; + loadDeck(deckIdNumber); mStage = STAGE_WAITING; deckNum = controlId; diff --git a/projects/mtg/src/GameStateDuel.cpp b/projects/mtg/src/GameStateDuel.cpp index d5142e05a..cbd945da2 100644 --- a/projects/mtg/src/GameStateDuel.cpp +++ b/projects/mtg/src/GameStateDuel.cpp @@ -100,18 +100,19 @@ void GameStateDuel::Start() } if(deckmenu){ - if (decksneeded){ - //translate deck creating desc - Translator * t = Translator::GetInstance(); - map::iterator it = t->deckValues.find("Create your Deck!"); - if (it != t->deckValues.end()) - deckmenu->Add(-1,_("Create your Deck!").c_str(), it->second); - else - deckmenu->Add(-1,_("Create your Deck!").c_str(),"Highly recommended to get\nthe full Wagic experience!"); - premadeDeck = true; - fillDeckMenu(deckmenu,RESPATH"/player/premade"); - } + if (decksneeded){ + //translate deck creating desc + Translator * t = Translator::GetInstance(); + map::iterator it = t->deckValues.find("Create your Deck!"); + if (it != t->deckValues.end()) + deckmenu->Add(-1,_("Create your Deck!").c_str(), it->second); + else + deckmenu->Add(-1,_("Create your Deck!").c_str(),"Highly recommended to get\nthe full Wagic experience!"); + premadeDeck = true; + fillDeckMenu(deckmenu,RESPATH"/player/premade"); + } deckmenu->Add(-1,_("New Deck...").c_str()); + deckmenu->Add(-2, "Main Menu", "Return to Main Menu" ); } for (int i = 0; i < 2; ++i){ @@ -225,7 +226,7 @@ void GameStateDuel::ensureOpponentMenu(){ opponentMenu->Add(-1,"Evil Twin", "Can you play against yourself?"); DeckManager * deckManager = DeckManager::GetInstance(); fillDeckMenu( deckManager->getAIDeckOrderList(), opponentMenu, RESPATH"/ai/baka", "ai_baka", mPlayers[0]); - opponentMenu->Add(-2,"Cancel", "Back to Main Menu"); + opponentMenu->Add(-2,"Cancel", "Choose a different player deck"); } } @@ -392,9 +393,10 @@ void GameStateDuel::Update(float dt) playerdata->taskList->save(); SAFE_DELETE(playerdata); SAFE_DELETE(menu); - mParent->DoTransition(TRANSITION_FADE,GAME_STATE_MENU); } } + mParent->DoTransition(TRANSITION_FADE,GAME_STATE_MENU); + break; default: if (JGE_BTN_OK == mEngine->ReadButton()) @@ -485,6 +487,7 @@ void GameStateDuel::Render() void GameStateDuel::ButtonPressed(int controllerId, int controlId) { int deckNumber = controlId; DeckManager * deckManager = DeckManager::GetInstance(); + int aiDeckSize = deckManager->getAIDeckOrderList()->size(); switch (controllerId){ case DUEL_MENU_CHOOSE_OPPONENT: { @@ -495,16 +498,17 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId) { mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY; break; default: - // cancel option. return to main menu + // cancel option. return to player deck selection if (controlId == -2) { opponentMenu->Close(); - mParent->SetNextState( DUEL_STATE_BACK_TO_MAIN_MENU ); + deckmenu->Close(); + mParent->SetNextState( DUEL_STATE_CHOOSE_DECK1 ); mGamePhase = DUEL_MENU_GAME_MENU; break; } - else if ( controlId != -1 && deckManager->getAIDeckOrderList()->size() > 0) // evil twin + else if ( controlId != -1 && aiDeckSize > 0) // evil twin deckNumber = deckManager->getAIDeckOrderList()->at( controlId - 1 ); loadPlayer(1,deckNumber,1); @@ -517,6 +521,13 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId) { } case DUEL_MENU_CHOOSE_DECK: { + if (controlId == -2 ) // user clicked on "Cancel" + { + if ( deckmenu) + deckmenu->Close(); + mGamePhase = DUEL_STATE_BACK_TO_MAIN_MENU; + break; + } if (controlId < 0){ mParent->SetNextState(GAME_STATE_DECK_VIEWER); return; diff --git a/projects/mtg/template.vcproj b/projects/mtg/template.vcproj index d90ca00bd..12f577b10 100644 --- a/projects/mtg/template.vcproj +++ b/projects/mtg/template.vcproj @@ -4,6 +4,7 @@ Version="9.00" Name="mtg" ProjectGUID="{53024371-2293-4D40-8ECF-FCB470B50DA1}" + RootNamespace="mtg" TargetFrameworkVersion="131072" > @@ -476,6 +477,10 @@ RelativePath=".\src\DeckDataWrapper.cpp" > + + @@ -869,10 +874,6 @@ Name="Header Files" Filter="h;hpp;hxx;hm;inl" > - - @@ -945,6 +946,10 @@ RelativePath=".\include\DeckDataWrapper.h" > + + @@ -1258,7 +1263,27 @@ Name="Resource Files" Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" > + + + + + + + + + +