diff --git a/projects/mtg/bin/Res/graphics/shop.jpg b/projects/mtg/bin/Res/graphics/shop.jpg index a0d9a9706..dc5a3826b 100644 Binary files a/projects/mtg/bin/Res/graphics/shop.jpg and b/projects/mtg/bin/Res/graphics/shop.jpg differ diff --git a/projects/mtg/bin/Res/graphics/shop_aliasing.png b/projects/mtg/bin/Res/graphics/shop_aliasing.png new file mode 100644 index 000000000..79e5cc0b1 Binary files /dev/null and b/projects/mtg/bin/Res/graphics/shop_aliasing.png differ diff --git a/projects/mtg/bin/Res/sets/gold.jpg b/projects/mtg/bin/Res/sets/gold.jpg new file mode 100644 index 000000000..c980db038 Binary files /dev/null and b/projects/mtg/bin/Res/sets/gold.jpg differ diff --git a/projects/mtg/bin/Res/sets/gold_thumb.jpg b/projects/mtg/bin/Res/sets/gold_thumb.jpg new file mode 100644 index 000000000..2f165e11a Binary files /dev/null and b/projects/mtg/bin/Res/sets/gold_thumb.jpg differ diff --git a/projects/mtg/include/GameStateShop.h b/projects/mtg/include/GameStateShop.h index 1ae19462e..407a8573e 100644 --- a/projects/mtg/include/GameStateShop.h +++ b/projects/mtg/include/GameStateShop.h @@ -23,7 +23,7 @@ class GameStateShop: public GameState, public JGuiListener JLBFont * itemFont; JQuad * mBg; JTexture * bgTexture; - JTexture * altThumb[7]; + JTexture * altThumb[8]; JQuad * mBack; SimpleMenu * menu; int mStage; diff --git a/projects/mtg/include/ShopItem.h b/projects/mtg/include/ShopItem.h index 4e2604e5d..ebadf974c 100644 --- a/projects/mtg/include/ShopItem.h +++ b/projects/mtg/include/ShopItem.h @@ -19,6 +19,7 @@ class hgeDistortionMesh; class ShopItem:public JGuiObject{ private: + friend class ShopItems; bool mHasFocus; bool mRelease; JLBFont *mFont; @@ -58,6 +59,7 @@ class ShopItems:public JGuiController,public JGuiListener{ PriceList * pricelist; int mX, mY, mHeight; JLBFont* mFont; + JQuad * mBgAA; MTGAllCards * collection; SimpleMenu * dialog; int showPriceDialog; diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 1eebb6223..322a96a6f 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -115,17 +115,28 @@ void CardGui::Render() JQuad * CardGui::alternateThumbQuad(MTGCard * card){ JQuad * q; - switch(card->getColor()) - { - case Constants::MTG_COLOR_ARTIFACT : q = resources.RetrieveTempQuad("artifact_thumb.jpg");break; - case Constants::MTG_COLOR_GREEN: q = resources.RetrieveTempQuad("green_thumb.jpg");break; - case Constants::MTG_COLOR_BLUE : q = resources.RetrieveTempQuad("blue_thumb.jpg");break; - case Constants::MTG_COLOR_RED : q = resources.RetrieveTempQuad("red_thumb.jpg");break; - case Constants::MTG_COLOR_BLACK: q = resources.RetrieveTempQuad("black_thumb.jpg");break; - case Constants::MTG_COLOR_WHITE: q = resources.RetrieveTempQuad("white_thumb.jpg");break; - case Constants::MTG_COLOR_LAND : q = resources.RetrieveTempQuad("land_thumb.jpg");break; - default: q = resources.RetrieveTempQuad("black_thumb.jpg");break; - } + int nb_colors = 0; + for(int i=0;icolors[i]) + nb_colors++; + } + + if(nb_colors > 1){ + q = resources.RetrieveTempQuad("gold_thumb.jpg"); + } + else{ + switch(card->getColor()) + { + case Constants::MTG_COLOR_ARTIFACT : q = resources.RetrieveTempQuad("artifact_thumb.jpg");break; + case Constants::MTG_COLOR_GREEN: q = resources.RetrieveTempQuad("green_thumb.jpg");break; + case Constants::MTG_COLOR_BLUE : q = resources.RetrieveTempQuad("blue_thumb.jpg");break; + case Constants::MTG_COLOR_RED : q = resources.RetrieveTempQuad("red_thumb.jpg");break; + case Constants::MTG_COLOR_BLACK: q = resources.RetrieveTempQuad("black_thumb.jpg");break; + case Constants::MTG_COLOR_WHITE: q = resources.RetrieveTempQuad("white_thumb.jpg");break; + case Constants::MTG_COLOR_LAND : q = resources.RetrieveTempQuad("land_thumb.jpg");break; + default: q = resources.RetrieveTempQuad("gold_thumb.jpg");break; + } + } if(q && q->mTex) q->SetHotSpot(q->mTex->mWidth/2,q->mTex->mHeight/2); return q; @@ -135,17 +146,28 @@ void CardGui::alternateRender(MTGCard * card, const Pos& pos){ // Draw the "unknown" card model JRenderer * renderer = JRenderer::GetInstance(); JQuad * q; - switch(card->getColor()) - { - case Constants::MTG_COLOR_ARTIFACT: q = resources.RetrieveTempQuad("artifact.jpg");break; - case Constants::MTG_COLOR_GREEN: q = resources.RetrieveTempQuad("green.jpg");break; - case Constants::MTG_COLOR_BLUE : q = resources.RetrieveTempQuad("blue.jpg");break; - case Constants::MTG_COLOR_RED : q = resources.RetrieveTempQuad("red.jpg");break; - case Constants::MTG_COLOR_BLACK: q = resources.RetrieveTempQuad("black.jpg");break; - case Constants::MTG_COLOR_WHITE: q = resources.RetrieveTempQuad("white.jpg");break; - case Constants::MTG_COLOR_LAND: q = resources.RetrieveTempQuad("land.jpg");break; - default: q = resources.RetrieveTempQuad("black.jpg");break; - } + int nb_colors = 0; + for(int i=0;icolors[i]) + nb_colors++; + } + + if(nb_colors > 1){ + q = resources.RetrieveTempQuad("gold.jpg"); + } + else{ + switch(card->getColor()) + { + case Constants::MTG_COLOR_ARTIFACT: q = resources.RetrieveTempQuad("artifact.jpg");break; + case Constants::MTG_COLOR_GREEN: q = resources.RetrieveTempQuad("green.jpg");break; + case Constants::MTG_COLOR_BLUE : q = resources.RetrieveTempQuad("blue.jpg");break; + case Constants::MTG_COLOR_RED : q = resources.RetrieveTempQuad("red.jpg");break; + case Constants::MTG_COLOR_BLACK: q = resources.RetrieveTempQuad("black.jpg");break; + case Constants::MTG_COLOR_WHITE: q = resources.RetrieveTempQuad("white.jpg");break; + case Constants::MTG_COLOR_LAND: q = resources.RetrieveTempQuad("land.jpg");break; + default: q = resources.RetrieveTempQuad("gold.jpg");break; + } + } if(q && q->mTex){ q->SetHotSpot(q->mTex->mWidth/2,q->mTex->mHeight/2); diff --git a/projects/mtg/src/GameStateShop.cpp b/projects/mtg/src/GameStateShop.cpp index fdfeacb51..585878ed8 100644 --- a/projects/mtg/src/GameStateShop.cpp +++ b/projects/mtg/src/GameStateShop.cpp @@ -26,8 +26,6 @@ void GameStateShop::Create(){ void GameStateShop::Start() { menu = NULL; - menuFont = resources.GetJLBFont(Constants::MENU_FONT); - itemFont = resources.GetJLBFont(Constants::MAIN_FONT); mStage = STAGE_SHOP_SHOP; @@ -42,10 +40,14 @@ void GameStateShop::Start() altThumb[4] = resources.RetrieveTexture("black_thumb.jpg", RETRIEVE_LOCK); altThumb[5] = resources.RetrieveTexture("white_thumb.jpg", RETRIEVE_LOCK); altThumb[6] = resources.RetrieveTexture("land_thumb.jpg", RETRIEVE_LOCK); + altThumb[7] = resources.RetrieveTexture("gold_thumb.jpg", RETRIEVE_LOCK); mBg = resources.RetrieveQuad("shop.jpg"); mBack = resources.GetQuad("back"); + menuFont = resources.GetJLBFont(Constants::MENU_FONT); + itemFont = resources.GetJLBFont(Constants::MAIN_FONT); + JRenderer::GetInstance()->ResetPrivateVRAM(); JRenderer::GetInstance()->EnableVSync(true); @@ -128,7 +130,7 @@ void GameStateShop::End() resources.Release(bgTexture); //Release alternate thumbnails. - for(int i=0;i<7;i++){ + for(int i=0;i<8;i++){ resources.Release(altThumb[i]); } @@ -169,23 +171,14 @@ void GameStateShop::Render() //Erase JRenderer * r = JRenderer::GetInstance(); r->ClearScreen(ARGB(0,0,0,0)); - if (mBg)JRenderer::GetInstance()->RenderQuad(mBg,0,0); - - itemFont->SetColor(ARGB(255,255,255,255)); - char c[4096]; - r->FillRect(0,SCREEN_HEIGHT-17,SCREEN_WIDTH,17,ARGB(128,0,0,0)); - sprintf(c, _("[]:other cards /\\:list").c_str()); - unsigned int len = 4 + itemFont->GetStringWidth(c); - itemFont->DrawString(c,SCREEN_WIDTH-len,SCREEN_HEIGHT-12); + if (mBg) r->RenderQuad(mBg,0,0); if (shop) shop->Render(); - if (mStage == STAGE_SHOP_MENU && menu){ menu->Render(); } - } void GameStateShop::ButtonPressed(int controllerId, int controlId) diff --git a/projects/mtg/src/ShopItem.cpp b/projects/mtg/src/ShopItem.cpp index fbfa384ae..d3383c132 100644 --- a/projects/mtg/src/ShopItem.cpp +++ b/projects/mtg/src/ShopItem.cpp @@ -8,17 +8,17 @@ - float ShopItems::_x1[] = { 79, 20, 27,103,154,187,102,145,199,133,183}; - float ShopItems::_y1[] = {150,193,222,167,164,156,195,190,176,220,220}; + float ShopItems::_x1[] = { 79, 19, 27,103,154,187,102,144,198,133,183}; + float ShopItems::_y1[] = {150,194,222,167,164,156,195,190,175,220,220}; - float ShopItems::_x2[] = {103, 49, 73,135,183,213,138,181,231,171,225}; - float ShopItems::_y2[] = {155,180,218,166,166,154,195,186,177,225,216}; + float ShopItems::_x2[] = {103, 48, 74,135,183,215,138,181,231,171,225}; + float ShopItems::_y2[] = {155,179,218,165,166,155,195,186,177,225,216}; - float ShopItems::_x3[] = { 48, 60, 10, 96,139,190, 81,146,189, 98,191}; - float ShopItems::_y3[] = {163,202,255,183,180,170,219,212,195,250,251}; + float ShopItems::_x3[] = { 48, 61, 9, 96,139,190, 81,146,187, 97,191}; + float ShopItems::_y3[] = {164,205,257,184,180,170,219,212,195,251,252}; - float ShopItems::_x4[] = { 74, 88, 64,131,171,221,123,187,225,141,237}; - float ShopItems::_y4[] = {167,187,248,182,182,168,219,208,196,258,245}; + float ShopItems::_x4[] = { 76, 90, 65,131,171,221,123,187,225,141,237}; + float ShopItems::_y4[] = {169,188,250,182,182,168,220,208,198,259,245}; ShopItem::ShopItem(int id, JLBFont *font, char* text, JQuad * _quad,JQuad * _thumb, float _xy[], bool hasFocus, int _price): JGuiObject(id), mFont(font), mText(text), quad(_quad), thumb(_thumb), price(_price) @@ -173,7 +173,6 @@ void ShopItem::Render(){ if (card) CardGui::alternateRender(card,Pos(SCREEN_WIDTH - 105,SCREEN_HEIGHT/2 - 5,0.9f* 285/250, 0,255)); } - mFont->DrawString(mText.c_str(), SCREEN_WIDTH/2 - 50, SCREEN_HEIGHT - 16,JGETEXT_CENTER); } } @@ -238,6 +237,10 @@ ShopItems::ShopItems(int id, JGuiListener* listener, JLBFont* font, int x, int y }; myCollection = NEW DeckDataWrapper(NEW MTGDeck(options.profileFile(PLAYER_COLLECTION).c_str(), _collection)); showCardList = true; + + mBgAA = resources.RetrieveQuad("shop_aliasing.png"); + if(mBgAA) + mBgAA->SetTextureRect(0,0,250,120); } @@ -296,6 +299,13 @@ void ShopItems::Update(float dt){ void ShopItems::Render(){ JGuiController::Render(); + JRenderer * r = JRenderer::GetInstance(); + + if (display) display->Render(); + + if (mBgAA) + r->RenderQuad(mBgAA,0,SCREEN_HEIGHT-128); + if (showPriceDialog==-1){ }else{ @@ -303,16 +313,29 @@ void ShopItems::Render(){ dialog->Render(); } } + + mFont->SetColor(ARGB(255,255,255,255)); + char c[4096]; + r->FillRect(0,SCREEN_HEIGHT-17,SCREEN_WIDTH,17,ARGB(128,0,0,0)); + sprintf(c, _("[]:other cards /\\:list").c_str()); + unsigned int len = 4 + mFont->GetStringWidth(c); + mFont->DrawString(c,SCREEN_WIDTH-len,SCREEN_HEIGHT-14); + char credits[512]; sprintf(credits,_("credits: %i").c_str(), playerdata->credits); mFont->SetColor(ARGB(200,0,0,0)); - mFont->DrawString(credits, 5, SCREEN_HEIGHT - 13); + mFont->DrawString(credits, 5, SCREEN_HEIGHT - 12); mFont->SetColor(ARGB(255,255,255,255)); - mFont->DrawString(credits, 5, SCREEN_HEIGHT - 15); - if (display) display->Render(); + mFont->DrawString(credits, 5, SCREEN_HEIGHT - 14); + + if(mCurr >= 0){ + mFont->SetColor(ARGB(255,255,255,0)); + ShopItem * item = ((ShopItem *)mObjects[mCurr]); + mFont->DrawString(item->mText.c_str(), SCREEN_WIDTH/2 - 50, SCREEN_HEIGHT - 14,JGETEXT_CENTER); + mFont->SetColor(ARGB(255,255,255,255)); + } if (showCardList){ - JRenderer * r = JRenderer::GetInstance(); r->FillRoundRect(290,5, 160, mCount * 20 + 15,5,ARGB(200,0,0,0)); for (int i = 0; i< mCount; ++i){ @@ -448,6 +471,7 @@ ShopItems::~ShopItems(){ SAFE_DELETE(dialog); safeDeleteDisplay(); SAFE_DELETE(myCollection); + resources.Release(mBgAA); } ostream& ShopItem::toString(ostream& out) const