SimpleMenu::SimpleMenu(JGE* jge, WResourceManager* resourceManager, int id, JGuiListener* listener, int fontId, float x, float y, const char * _title, int _maxItems, bool centerHorizontal, bool centerVertical) : JGuiController(jge, id, listener), fontId(fontId), mCenterHorizontal(centerHorizontal), mCenterVertical(centerVertical), stars(0) { autoTranslate = true; isMultipleChoice = false; mHeight = 2 * SimpleMenuConst::kVerticalMargin; mWidth = 0; mX = x; mY = y; title = _(_title); startId = 0; maxItems = _maxItems; selectionT = 0; timeOpen = 0; mClosed = false; selectionTargetY = selectionY = y + SimpleMenuConst::kVerticalMargin; if(resourceManager) { JRenderer* renderer = JRenderer::GetInstance(); if (!spadeLTex) spadeLTex = resourceManager->RetrieveTexture("spade_ul.png", RETRIEVE_MANAGE); if (!spadeRTex) spadeRTex = resourceManager->RetrieveTexture("spade_ur.png", RETRIEVE_MANAGE); if (!jewelTex) jewelTex = renderer->CreateTexture(5, 5, TEX_TYPE_USE_VRAM); if (!sideTex) sideTex = resourceManager->RetrieveTexture("menuside.png", RETRIEVE_MANAGE); spadeL = resourceManager->RetrieveQuad("spade_ul.png", 0, 0, 0, 0, "spade_ul", RETRIEVE_MANAGE); spadeR = resourceManager->RetrieveQuad("spade_ur.png", 0, 0, 0, 0, "spade_ur", RETRIEVE_MANAGE); jewel.reset(NEW JQuad(jewelTex, 1, 1, 3, 3)); side = resourceManager->RetrieveQuad("menuside.png", 1, 1, 1, SimpleMenuConst::kPoleWidth, "menuside", RETRIEVE_MANAGE); stars = NEW hgeParticleSystem(resourceManager->RetrievePSI("stars.psi", resourceManager->GetQuad("stars").get())); stars->FireAt(mX, mY); } }
DeckMenu::DeckMenu(int id, JGuiListener* listener, int fontId, const string _title, const int&, bool showDetailsOverride) : JGuiController(JGE::GetInstance(), id, listener), fontId(fontId), mShowDetailsScreen( showDetailsOverride ) { backgroundName = "DeckMenuBackdrop"; mAlwaysShowDetailsButton = false; mSelectedDeck = NULL; mY = 50; mWidth = 176; mX = 115; titleX = 110; // center point in title box titleY = 15; titleWidth = 180; // width of inner box of title descX = 260 + DeckMenuConst::kDescriptionHorizontalBoxPadding; descY = 100 + DeckMenuConst::kDescriptionVerticalBoxPadding; descHeight = 145; descWidth = 195; detailedInfoBoxX = 400; detailedInfoBoxY = 235; starsOffsetX = 50; statsX = 300; statsY = 15; statsHeight = 50; statsWidth = 227; avatarX = 232; avatarY = 11; menuInitialized = false; float scrollerWidth = 200.0f; float scrollerHeight = 28.0f; mScroller = NEW VerticalTextScroller(Fonts::MAIN_FONT, 14, 235, scrollerWidth, scrollerHeight, DeckMenuConst::kVerticalScrollSpeed); mAutoTranslate = true; maxItems = 6; mHeight = 2 * DeckMenuConst::kVerticalMargin + (maxItems * DeckMenuConst::kLineHeight); // we want to cap the deck titles to 15 characters to avoid overflowing deck names title = _(_title); displayTitle = title; mFont = WResourceManager::Instance()->GetWFont(fontId); startId = 0; selectionT = 0; timeOpen = 0; mClosed = false; if (mFont->GetStringWidth(title.c_str()) > titleWidth) titleFontScale = SCALE_SHRINK; else titleFontScale = SCALE_NORMAL; mSelectionTargetY = selectionY = DeckMenuConst::kVerticalMargin; if (NULL == stars) stars = NEW hgeParticleSystem(WResourceManager::Instance()->RetrievePSI("stars.psi", WResourceManager::Instance()->GetQuad("stars").get())); stars->FireAt(mX, mY); const string detailedInfoString = _("Detailed Info"); WFont *descriptionFont = WResourceManager::Instance()->GetWFont(Fonts::MAIN_FONT); float stringWidth = descriptionFont->GetStringWidth(detailedInfoString.c_str()); float boxStartX = detailedInfoBoxX - stringWidth / 2 + 20; dismissButton = NEW InteractiveButton( this, DeckMenuConst::kDetailedInfoButtonId, Fonts::MAIN_FONT, detailedInfoString, boxStartX, detailedInfoBoxY, JGE_BTN_CANCEL); JGuiController::Add(dismissButton, true); updateScroller(); }