diff --git a/projects/mtg/bin/Res/graphics/avatar_evil_twin.jpg b/projects/mtg/bin/Res/graphics/avatar_evil_twin.jpg new file mode 100644 index 000000000..50ed6e2e2 Binary files /dev/null and b/projects/mtg/bin/Res/graphics/avatar_evil_twin.jpg differ diff --git a/projects/mtg/include/DeckMetaData.h b/projects/mtg/include/DeckMetaData.h index f26ca2282..75ef81b2c 100644 --- a/projects/mtg/include/DeckMetaData.h +++ b/projects/mtg/include/DeckMetaData.h @@ -26,13 +26,14 @@ private: // statistical information int mGamesPlayed, mVictories, mPercentVictories, mDifficulty; + int getAvatarId(); DeckMetaData(); public: - DeckMetaData(const string& filename); + DeckMetaData(const string& filename, bool isAI = false); void LoadDeck(); void LoadStats(); @@ -42,7 +43,6 @@ public: string getName(); string getAvatarFilename(); string getColorIndex(); - int getAvatarId(int deckId); string getStatsSummary(); int getDeckId(); diff --git a/projects/mtg/include/GameStateDuel.h b/projects/mtg/include/GameStateDuel.h index 935b27e0c..e76a80720 100644 --- a/projects/mtg/include/GameStateDuel.h +++ b/projects/mtg/include/GameStateDuel.h @@ -65,10 +65,10 @@ public: { MENUITEM_CANCEL = kCancelMenuID, MENUITEM_NEW_DECK = -10, - MENUITEM_RANDOM_PLAYER = -11, - MENUITEM_RANDOM_AI = -12, + MENUITEM_RANDOM_PLAYER = kRandomPlayerMenuID, + MENUITEM_RANDOM_AI = kRandomAIPlayerMenuID, MENUITEM_MAIN_MENU = -13, - MENUITEM_EVIL_TWIN = -14, + MENUITEM_EVIL_TWIN = kEvilTwinMenuID, MENUITEM_MULLIGAN = -15, #ifdef NETWORK_SUPPORT MENUITEM_REMOTE_CLIENT = -16, diff --git a/projects/mtg/src/DeckManager.cpp b/projects/mtg/src/DeckManager.cpp index 041c4a026..d0cd5c29d 100644 --- a/projects/mtg/src/DeckManager.cpp +++ b/projects/mtg/src/DeckManager.cpp @@ -109,12 +109,12 @@ void DeckManager::AddMetaData( const string& filename, bool isAI ) { if (isAI) { - aiDeckOrderList.push_back ( NEW DeckMetaData( filename ) ); + aiDeckOrderList.push_back ( NEW DeckMetaData( filename, isAI ) ); aiDeckStatsMap.insert( make_pair( filename.c_str(), new StatsWrapper( aiDeckOrderList.back()->getDeckId()) )); } else { - playerDeckOrderList.push_back ( NEW DeckMetaData( filename ) ); + playerDeckOrderList.push_back ( NEW DeckMetaData( filename, isAI ) ); playerDeckStatsMap.insert( make_pair( filename.c_str(), new StatsWrapper( playerDeckOrderList.back()->getDeckId()) )); } } diff --git a/projects/mtg/src/DeckMenu.cpp b/projects/mtg/src/DeckMenu.cpp index 505dd0e51..8e5b64ce5 100644 --- a/projects/mtg/src/DeckMenu.cpp +++ b/projects/mtg/src/DeckMenu.cpp @@ -247,6 +247,7 @@ void DeckMenu::Render() if (quad.get()) renderer->RenderQuad(quad.get(), avatarX, avatarY); } + // fill in the description part of the screen string text = wordWrap(_(currentMenuItem->desc), descWidth, mainFont->mFontID ); mainFont->DrawString(text.c_str(), descX, descY); diff --git a/projects/mtg/src/DeckMenuItem.cpp b/projects/mtg/src/DeckMenuItem.cpp index d921ae3dc..cd902440d 100644 --- a/projects/mtg/src/DeckMenuItem.cpp +++ b/projects/mtg/src/DeckMenuItem.cpp @@ -41,9 +41,28 @@ DeckMenuItem::DeckMenuItem(DeckMenu* _parent, int id, int fontId, string text, f if (meta && meta->getAvatarFilename().size() > 0) this->imageFilename = meta->getAvatarFilename(); - else - this->imageFilename = "avatar.jpg"; - + else + { + // this is a non-deck menu item (ie "Random", "Cancel", etc + switch(id) + { + case kRandomPlayerMenuID: + this->imageFilename = "avatar.jpg"; + break; + case kRandomAIPlayerMenuID: + this->imageFilename = "avatar.jpg"; + break; + case kEvilTwinMenuID: + this->imageFilename = "avatar_evil_twin.jpg"; + break; + default: + // do nothing. + break; + } + + } + + mDisplayInitialized = false; } diff --git a/projects/mtg/src/DeckMetaData.cpp b/projects/mtg/src/DeckMetaData.cpp index ccb72ae66..d61c9e839 100644 --- a/projects/mtg/src/DeckMetaData.cpp +++ b/projects/mtg/src/DeckMetaData.cpp @@ -10,9 +10,9 @@ //Merge this with DeckStats //Have this class handle all the Meta Data rather than relying on MTGDeck. Then MTGDeck would have a MetaData object... -DeckMetaData::DeckMetaData(const string& filename) +DeckMetaData::DeckMetaData(const string& filename, bool isAI) : mFilename(filename), mGamesPlayed(0), mVictories(0), mPercentVictories(0), mDifficulty(0), - mDeckLoaded(false), mStatsLoaded(false) + mDeckLoaded(false), mStatsLoaded(false), mIsAI(isAI) { // TODO, figure out how we can defer this to later - currently, // there's a catch 22, as we sort the deck list alphabetically, so we need to open the deck file @@ -36,12 +36,7 @@ void DeckMetaData::LoadStats() mVictories = opponentDeckStats->victories; mGamesPlayed = opponentDeckStats->nbgames; mColorIndex = opponentDeckStats->manaColorIndex; - ostringstream oss; - int deckFilenameOffset = mStatsFilename.find("deck") + 4; - int oppDeckId = atoi(mStatsFilename.substr(deckFilenameOffset, mStatsFilename.find_last_of(".")).c_str()); - int avatarId = getAvatarId(oppDeckId); - oss << "avatar" << avatarId << ".jpg"; - mAvatarFilename = oss.str(); + if (mPercentVictories < 34) { mDifficulty = HARD; @@ -55,12 +50,6 @@ void DeckMetaData::LoadStats() mDifficulty = EASY; } } - else - { - ostringstream oss; - oss << "avatar" << getAvatarId(mDeckId) << ".jpg"; - mAvatarFilename = oss.str(); - } } else { @@ -79,10 +68,14 @@ void DeckMetaData::LoadStats() } // since we only have 100 stock avatar images, we need to recycle the images for deck numbers > 99 -int DeckMetaData::getAvatarId(int deckId) +int DeckMetaData::getAvatarId() { - int avatarId = deckId % 100; - if (deckId >= 100 && avatarId == 0) + if ( mDeckId < 101 ) + return mDeckId; + + int avatarId = mDeckId % 100; + + if (avatarId == 0) return 100; return avatarId; @@ -97,6 +90,14 @@ void DeckMetaData::LoadDeck() mDescription = trim(deck.meta_desc); mDeckId = atoi((mFilename.substr(mFilename.find("deck") + 4, mFilename.find(".txt"))).c_str()); mDeckLoaded = true; + if (!mIsAI) + mAvatarFilename = "avatar.jpg"; + else + { + ostringstream avatarFilename; + avatarFilename << "avatar" << getAvatarId() << ".jpg"; + mAvatarFilename = avatarFilename.str(); + } }