From c42ba32ae7f808ebf0ae02c5e1e72055a995bbc4 Mon Sep 17 00:00:00 2001 From: "techdragon.nguyen@gmail.com" Date: Mon, 30 Jan 2012 18:02:26 +0000 Subject: [PATCH] added new buttons for shop for New Cards and displaying the card list. --- JGE/src/iOS/EAGLView.m | 2 - projects/mtg/include/GameStateShop.h | 7 +++- projects/mtg/include/InteractiveButton.h | 2 + projects/mtg/src/GameStateShop.cpp | 44 ++++++++++++++++++-- projects/mtg/wagic.xcodeproj/project.pbxproj | 2 +- 5 files changed, 49 insertions(+), 8 deletions(-) diff --git a/JGE/src/iOS/EAGLView.m b/JGE/src/iOS/EAGLView.m index cfa5fa537..9905845c4 100755 --- a/JGE/src/iOS/EAGLView.m +++ b/JGE/src/iOS/EAGLView.m @@ -435,7 +435,6 @@ static NSString *_MY_AD_WHIRL_APPLICATION_KEY_IPAD = @"2e70e3f3da40408588b9a3170 CGPoint newCoordinates = [self normalizeClickCoordinatesWithPoint: currentLocation]; g_engine->LeftClicked( newCoordinates.x, newCoordinates.y); - g_engine->HoldKey_NoRepeat(JGE_BTN_NONE); BOOL clickedWithinGameArea = (currentLocation.y > es2renderer.viewPort.top && currentLocation.y < es2renderer.viewPort.bottom && @@ -467,7 +466,6 @@ static NSString *_MY_AD_WHIRL_APPLICATION_KEY_IPAD = @"2e70e3f3da40408588b9a3170 } oldCoordinates = newCoordinates; - g_engine->ReleaseKey( JGE_BTN_NONE ); } diff --git a/projects/mtg/include/GameStateShop.h b/projects/mtg/include/GameStateShop.h index e320ac388..d26173a19 100644 --- a/projects/mtg/include/GameStateShop.h +++ b/projects/mtg/include/GameStateShop.h @@ -10,6 +10,7 @@ #include "CardDisplay.h" #include "DeckDataWrapper.h" #include "Tasks.h" +#include "InteractiveButton.h" #define STATE_BUY 1 #define STATE_SELL 2 @@ -72,10 +73,14 @@ private: vector subBooster; MTGDeck * booster; bool bListCards; + InteractiveButton *cycleCardsButton, *showCardListButton; + bool disablePurchase; void beginFilters(); void deleteDisplay(); - + void enableButtons(); + void renderButtons(); + WSyncable bigSync; SimpleMenu * menu; PriceList * pricelist; diff --git a/projects/mtg/include/InteractiveButton.h b/projects/mtg/include/InteractiveButton.h index 81ccf20b0..3a7f52aca 100644 --- a/projects/mtg/include/InteractiveButton.h +++ b/projects/mtg/include/InteractiveButton.h @@ -26,6 +26,8 @@ const int kMenuButtonId = 10003; const int kFilterButtonId = 10004; const int kNextStatsButtonId = 10005; const int kPrevStatsButtonId = 10006; +const int kCycleCardsButtonId = 10007; +const int kShowCardListButtonId = 10008; class InteractiveButton: public SimpleButton { diff --git a/projects/mtg/src/GameStateShop.cpp b/projects/mtg/src/GameStateShop.cpp index 9587ddcc1..4d8a1f11a 100644 --- a/projects/mtg/src/GameStateShop.cpp +++ b/projects/mtg/src/GameStateShop.cpp @@ -12,6 +12,7 @@ #include "TestSuiteAI.h" #include +#include "WFont.h" float GameStateShop::_x1[] = { 79, 19, 27, 103, 154, 187, 102, 144, 198, 133, 183 }; float GameStateShop::_y1[] = { 150, 194, 222, 167, 164, 156, 195, 190, 175, 220, 220 }; @@ -74,10 +75,17 @@ GameStateShop::GameStateShop(GameApp* parent) : kOtherCardsString = _(kOtherCardsString); kCreditsString = _(kCreditsString); + + cycleCardsButton = NEW InteractiveButton(NULL, kCycleCardsButtonId, Fonts::MAIN_FONT, "New Cards", SCREEN_WIDTH_F - 80, SCREEN_HEIGHT_F - 15, JGE_BTN_PRI); + + showCardListButton = NEW InteractiveButton(NULL, kShowCardListButtonId, Fonts::MAIN_FONT, "Show List", SCREEN_WIDTH_F - 150, SCREEN_HEIGHT_F - 15, JGE_BTN_SEC); + disablePurchase = false; } GameStateShop::~GameStateShop() { + SAFE_DELETE( cycleCardsButton ); + SAFE_DELETE( showCardListButton ); End(); } @@ -619,8 +627,18 @@ void GameStateShop::Update(float dt) bListCards = !bListCards; else if (shopMenu) { - if (shopMenu->CheckUserInput(btn)) - srcCards->Touch(); + if (cycleCardsButton->ButtonPressed() || showCardListButton->ButtonPressed()) + { + disablePurchase = true; + return; + } + else if (btn == JGE_BTN_OK && disablePurchase) + { + disablePurchase = false; + } + else + if (shopMenu->CheckUserInput(btn)) + srcCards->Touch(); } if (shopMenu) shopMenu->Update(dt); @@ -645,6 +663,19 @@ void GameStateShop::deleteDisplay() subBooster.clear(); SAFE_DELETE(boosterDisplay); } + +void GameStateShop::enableButtons() +{ + cycleCardsButton->setIsSelectionValid(true); + showCardListButton->setIsSelectionValid(true); +} + +void GameStateShop::renderButtons() +{ + cycleCardsButton->Render(); + showCardListButton->Render(); +} + void GameStateShop::Render() { //Erase @@ -719,10 +750,14 @@ void GameStateShop::Render() mFont->SetColor(ARGB(255,255,255,255)); mFont->DrawString(stream.str(), 5, SCREEN_HEIGHT - 14); +#ifndef TOUCH_ENABLED float len = 4 + mFont->GetStringWidth(kOtherCardsString.c_str()); r->RenderQuad(pspIcons[6].get(), SCREEN_WIDTH - len - kGamepadIconSize - 10, SCREEN_HEIGHT - 8, 0, kGamepadIconSize, kGamepadIconSize); mFont->DrawString(kOtherCardsString, SCREEN_WIDTH - len, SCREEN_HEIGHT - 14); - +#else + enableButtons(); +#endif + mFont->SetColor(ARGB(255,255,255,0)); mFont->DrawString(descPurchase(bigSync.getPos()).c_str(), SCREEN_WIDTH / 2, SCREEN_HEIGHT - 14, JGETEXT_CENTER); mFont->SetColor(ARGB(255,255,255,255)); @@ -733,12 +768,13 @@ void GameStateShop::Render() } if (menu) menu->Render(); + + renderButtons(); } void GameStateShop::ButtonPressed(int controllerId, int controlId) { int sel = bigSync.getOffset(); - switch (controllerId) { case -102: //Buying something... diff --git a/projects/mtg/wagic.xcodeproj/project.pbxproj b/projects/mtg/wagic.xcodeproj/project.pbxproj index febfbe1ad..4f200a3f0 100755 --- a/projects/mtg/wagic.xcodeproj/project.pbxproj +++ b/projects/mtg/wagic.xcodeproj/project.pbxproj @@ -1562,6 +1562,7 @@ CEA376B71291C60500B9016A /* GuiPhaseBar.h */, CEA376B81291C60500B9016A /* GuiPlay.h */, CEA376B91291C60500B9016A /* GuiStatic.h */, + 12272FC614CD68FB00192DC7 /* InteractiveButton.h */, CEA376BA1291C60500B9016A /* ManaCost.h */, CEA376BB1291C60500B9016A /* ManaCostHybrid.h */, CEA376BC1291C60500B9016A /* MenuItem.h */, @@ -1612,7 +1613,6 @@ CEA376EA1291C60500B9016A /* WFont.h */, CEA376EB1291C60500B9016A /* WGui.h */, CEA376EC1291C60500B9016A /* WResourceManager.h */, - 12272FC614CD68FB00192DC7 /* InteractiveButton.h */, ); path = include; sourceTree = "";