void GameStateShop::beginPurchase(int controlId) { WFont * mFont = WResourceManager::Instance()->GetWFont(Fonts::MENU_FONT); mFont->SetScale(SCALE_NORMAL); SAFE_DELETE(menu); if (mInventory[controlId] <= 0) { menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), -145, this, Fonts::MENU_FONT, SCREEN_WIDTH - 300, SCREEN_HEIGHT / 2, _("Sold Out").c_str()); menu->Add(-1, "Ok"); } else if (playerdata->credits - mPrices[controlId] < 0) { menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), -145, this, Fonts::MENU_FONT, SCREEN_WIDTH - 300, SCREEN_HEIGHT / 2, _("Not enough credits").c_str()); menu->Add(-1, "Ok"); if (options[Options::CHEATMODE].number) { menu->Add(-2, _("Steal it").c_str()); } } else { char buf[512]; if (controlId < BOOSTER_SLOTS) sprintf(buf, _("Purchase Booster: %i credits").c_str(), mPrices[controlId]); else sprintf(buf, _("Purchase Card: %i credits").c_str(), mPrices[controlId]); menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), -145, this, Fonts::MENU_FONT, SCREEN_WIDTH - 300, SCREEN_HEIGHT / 2, buf); menu->Add(controlId, "Yes"); menu->Add(-1, "No"); } }
void GameStateStory::Update(float dt) { if (!menu && mEngine->GetButtonClick(JGE_BTN_MENU)) { menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), 100, this, Fonts::MENU_FONT, SCREEN_WIDTH / 2 - 100, 25); menu->Add(0, string("Back to main menu")); menu->Add(kCancelMenuID, "Cancel"); } if (menu) { menu->Update(dt); if (menu->isClosed()) SAFE_DELETE(menu); //return; } if (flow) { if (flow->currentPageId == "End") { if (mEngine->GetButtonClick(JGE_BTN_OK) || mEngine->GetButtonClick(JGE_BTN_SEC)) { mParent->DoTransition(TRANSITION_FADE, GAME_STATE_MENU); } } flow->Update(dt); } }
void GameStateStory::loadStoriesMenu(const char * root) { SAFE_DELETE(menu); stories.clear(); vector<string>subFolders = JFileSystem::GetInstance()->scanfolder(root); for (size_t i = 0; i < subFolders.size(); ++i) { string subfolder = ensureFolder(subFolders[i]); string filename = root + subfolder + "story.xml"; if (FileExists(filename)) { subfolder.resize(subfolder.length() - 1); //remove trailing slash stories.push_back(subfolder); } } switch (stories.size()) { case 0: mParent->DoTransition(TRANSITION_FADE, GAME_STATE_MENU); break; case 1: flow = NEW StoryFlow(stories[0]); break; default: menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), 103, this, Fonts::MENU_FONT, 150, 60); for (size_t i = 0; i < stories.size(); ++i) { menu->Add(i, stories[i].c_str()); } menu->Add(kCancelMenuID, "Cancel"); } }
void GameStateAwards::Update(float dt) { if (mEngine->GetButtonClick(JGE_BTN_CANCEL)) options[Options::DISABLECARDS].number = !options[Options::DISABLECARDS].number; if (showMenu) { menu->Update(dt); } else { JButton key = JGE_BTN_NONE; while ((key = JGE::GetInstance()->ReadButton())) { switch (key) { case JGE_BTN_MENU: showMenu = true; SAFE_DELETE(menu); menu = NEW SimpleMenu(JGE::GetInstance(), EXIT_AWARDS_MENU, this, Fonts::MENU_FONT, 50, 170); if (mState == STATE_DETAILS) menu->Add(kBackToTrophiesID, "Back to Trophies"); menu->Add(kBackToMainMenuID, "Back to Main Menu"); menu->Add(kCancelMenuID, "Cancel"); break; case JGE_BTN_PREV: mParent->DoTransition(TRANSITION_FADE, GAME_STATE_MENU); break; case JGE_BTN_SEC: if (mState == STATE_LISTVIEW) mParent->DoTransition(TRANSITION_FADE, GAME_STATE_MENU); else { mState = STATE_LISTVIEW; SAFE_DELETE(detailview); } break; default: if (mState == STATE_LISTVIEW && listview) { listview->CheckUserInput(key); listview->Update(dt); } else if (mState == STATE_DETAILS && detailview) { detailview->CheckUserInput(key); detailview->Update(dt); } break; } } } if (setSrc) setSrc->Update(dt); }
void OptionKey::KeyPressed(LocalKeySym key) { from = key; g->UngrabKeyboard(this); grabbed = false; btnMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), 0, this, Fonts::MENU_FONT, 80, 10); for (int i = sizeof(btnList) / sizeof(btnList[0]) - 1; i >= 0; --i) { const KeyRep& rep = translateKey(btnList[i]); btnMenu->Add(i, rep.first.c_str()); } }
void GameStateOptions::Start() { newProfile = ""; timer = 0; mState = SHOW_OPTIONS; JRenderer::GetInstance()->EnableVSync(true); WGuiList * optionsList; optionsList = NEW WGuiList("Settings"); optionsList->Add(NEW WGuiHeader("General Options")); if (GameApp::HasMusic) optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MUSICVOLUME, "Music volume", 100, 10, 100), OptionVolume::getInstance())); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::SFXVOLUME, "SFX volume", 100, 10, 100), OptionVolume::getInstance())); if (options[Options::DIFFICULTY_MODE_UNLOCKED].number) { optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::DIFFICULTY, "Difficulty", 3, 1, 0), OptionDifficulty::getInstance())); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::ECON_DIFFICULTY, "Economic Difficuly", Constants::ECON_EASY))); } optionsList->Add(NEW OptionInteger(Options::INTERRUPT_SECONDS, "Seconds to pause for an Interrupt", 20, 1)); optionsList->Add(NEW OptionInteger(Options::INTERRUPTMYSPELLS, "Interrupt my spells")); optionsList->Add(NEW OptionInteger(Options::INTERRUPTMYABILITIES, "Interrupt my abilities")); optionsList->Add(NEW OptionInteger(Options::INTERRUPT_SECONDMAIN, "Interrupt opponent's end of turn")); optionsTabs = NEW WGuiTabMenu(); optionsTabs->Add(optionsList); optionsList = NEW WGuiList("Game"); optionsList->Add(NEW WGuiHeader("Interface Options")); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::CLOSEDHAND, "Closed hand", 1, 1, 0))); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::HANDDIRECTION, "Hand direction", 1, 1, 0))); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MANADISPLAY, "Mana display", 3, 1, 0))); optionsList->Add(NEW OptionInteger(Options::REVERSETRIGGERS, "Reverse left and right triggers")); optionsList->Add(NEW OptionInteger(Options::DISABLECARDS, "Disable card images")); optionsList->Add(NEW OptionInteger(Options::TRANSITIONS, "Disable screen transitions")); optionsList->Add(NEW OptionInteger(Options::OSD, "Display InGame extra information")); optionsTabs->Add(optionsList); optionsList = NEW WGuiList("User"); optionsList->Add(NEW WGuiHeader("User Options")); WDecoConfirm * cPrf = NEW WDecoConfirm(this, NEW OptionProfile(mParent, this)); cPrf->confirm = "Use this Profile"; OptionThemeStyle * ots = NEW OptionThemeStyle("Theme Style"); OptionDirectory * od = NEW OptionTheme(ots); WDecoConfirm * cThm = NEW WDecoConfirm(this, od); cThm->confirm = "Use this Theme"; WDecoConfirm * cStyle = NEW WDecoConfirm(this, ots); cStyle->confirm = "Use this Style"; optionsList->Add(NEW WGuiSplit(cPrf, cThm)); optionsList->Add(cStyle); optionsList->Add(NEW WGuiButton(NEW WGuiHeader("New Profile"), -102, kNewProfileID, this)); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::CHEATMODE, "Enable Cheat Mode"))); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::OPTIMIZE_HAND, "Optimize Starting Hand"))); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::CHEATMODEAIDECK, "Unlock All Ai Decks"))); optionsTabs->Add(optionsList); optionsList = NEW WGuiList("Advanced"); optionsList->Add(NEW WGuiHeader("Advanced Options")); WDecoStyled * wAdv = NEW WDecoStyled(NEW WGuiHeader("The following options require a restart.")); wAdv->mStyle = WDecoStyled::DS_STYLE_ALERT; optionsList->Add(wAdv); WDecoConfirm * cLang = NEW WDecoConfirm(this, NEW OptionLanguage("Language")); cLang->confirm = "Use this Language"; optionsList->Add(cLang); WDecoEnum * oGra = NEW WDecoEnum(NEW OptionInteger(Options::MAX_GRADE, "Minimum Card Grade", Constants::GRADE_DANGEROUS, 1, Constants::GRADE_BORDERLINE, "", Constants::GRADE_SUPPORTED)); optionsList->Add(oGra); WDecoEnum * oASPhases = NEW WDecoEnum(NEW OptionInteger(Options::ASPHASES, "Phase Skip Automation", Constants::ASKIP_FULL, 1, Constants::ASKIP_NONE, "", Constants::ASKIP_NONE)); optionsList->Add(oASPhases); optionsTabs->Add(optionsList); WDecoEnum * oFirstPlayer = NEW WDecoEnum(NEW OptionInteger(Options::FIRSTPLAYER, "First Turn Player", Constants::WHO_R, 1, Constants::WHO_P, "", Constants::WHO_P)); optionsList->Add(oFirstPlayer); WDecoEnum * oKickerPay = NEW WDecoEnum(NEW OptionInteger(Options::KICKERPAYMENT, "Kicker Cost", Constants::KICKER_CHOICE, 1, Constants::KICKER_ALWAYS, "", Constants::KICKER_ALWAYS)); optionsList->Add(oKickerPay); #ifndef IOS optionsList = NEW WGuiKeyBinder("Key Bindings", this); optionsTabs->Add(optionsList); #endif optionsList = NEW WGuiList("Credits"); optionsList->failMsg = ""; optionsTabs->Add(optionsList); optionsMenu = NEW SimpleMenu(JGE::GetInstance(), -102, this, Fonts::MAIN_FONT, 50, 170); optionsMenu->Add(kBackToMainMenuID, "Back to Main Menu"); optionsMenu->Add(kSaveAndBackToMainMenuID, "Save And Exit"); optionsMenu->Add(kCancelMenuID, "Cancel"); optionsTabs->Entering(JGE_BTN_NONE); }
void GameStateShop::Update(float dt) { if (menu && menu->isClosed()) SAFE_DELETE(menu); srcCards->Update(dt); alphaChange = 25 - static_cast<int>((float) (rand() - 1) / (RAND_MAX) * 50.0f); lightAlpha += alphaChange; if (lightAlpha < 0) lightAlpha = 0; if (lightAlpha > 50) lightAlpha = 50; JButton btn; switch (mStage) { case STAGE_SHOP_PURCHASE: if (menu) menu->Update(dt); beginPurchase(mBuying); mStage = STAGE_SHOP_SHOP; break; case STAGE_SHOP_MENU: if (menu) menu->Update(dt); else { menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), 11, this, Fonts::MENU_FONT, SCREEN_WIDTH / 2 - 100, 20); menu->Add(22, _("Ask about...").c_str()); menu->Add(14, _("Check task board").c_str()); if (options[Options::CHEATMODE].number) menu->Add(-2, _("Steal 1,000 credits").c_str()); menu->Add(12, _("Save And Exit").c_str()); menu->Add(kCancelMenuID, _("Cancel").c_str()); } break; case STAGE_SHOP_TASKS: if (menu && !menu->isClosed()) { menu->Update(dt); return; } if (taskList) { btn = mEngine->ReadButton(); taskList->Update(dt); if (taskList->getState() != TaskList::TASKS_INACTIVE) { if (btn == JGE_BTN_SEC || btn == JGE_BTN_CANCEL || btn == JGE_BTN_PREV) { taskList->End(); return; } else if (taskList->getState() == TaskList::TASKS_ACTIVE && btn == JGE_BTN_MENU) { if (!menu) { menu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), 11, this, Fonts::MENU_FONT, SCREEN_WIDTH / 2 - 100, 20); menu->Add(15, "Return to shop"); menu->Add(12, "Save And Exit"); menu->Add(kCancelMenuID, "Cancel"); } } } else mStage = STAGE_SHOP_SHOP; } #ifdef TESTSUITE if ((mEngine->GetButtonClick(JGE_BTN_PRI)) && (taskList)) { taskList->passOneDay(); if (taskList->getTaskCount() < 6) { taskList->addRandomTask(); taskList->addRandomTask(); } taskList->save(); } #endif break; case STAGE_ASK_ABOUT: btn = mEngine->ReadButton(); if (menu && !menu->isClosed()) { menu->CheckUserInput(btn); menu->Update(dt); return; } if (filterMenu) { if (btn == JGE_BTN_CTRL) { needLoad = filterMenu->Finish(); filterMenu->Update(dt); return; } if (filterMenu->isFinished()) { if (needLoad) { srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterRarity("T"))); srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterSet(MTGSets::INTERNAL_SET))); if (!srcCards->Size()) { srcCards->clearFilters(); //Repetition of check at end of filterMenu->Finish(), for the token removal srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterRarity("T"))); srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterSet(MTGSets::INTERNAL_SET))); } load(); } mStage = STAGE_SHOP_SHOP; } else { filterMenu->CheckUserInput(btn); filterMenu->Update(dt); } return; } break; case STAGE_SHOP_SHOP: btn = mEngine->ReadButton(); if (menu && !menu->isClosed()) { menu->CheckUserInput(btn); menu->Update(dt); return; } if (btn == JGE_BTN_MENU) { if (boosterDisplay) { deleteDisplay(); return; } mStage = STAGE_SHOP_MENU; return; } else if (btn == JGE_BTN_CTRL) beginFilters(); else if (btn == JGE_BTN_NEXT) { mStage = STAGE_SHOP_TASKS; if (!taskList) taskList = NEW TaskList(); taskList->Start(); } else if (boosterDisplay) { if (btn == JGE_BTN_SEC) deleteDisplay(); else { boosterDisplay->CheckUserInput(btn); boosterDisplay->Update(dt); } return; } else if (btn == JGE_BTN_PRI) // so we don't shuffle while we view our newly purchased booster display. { srcCards->Shuffle(); load(); disablePurchase = false; clearInput = true; return; } else if (btn == JGE_BTN_CANCEL) options[Options::DISABLECARDS].number = !options[Options::DISABLECARDS].number; else if (btn == JGE_BTN_SEC) { bListCards = !bListCards; disablePurchase = false; clearInput = true; return; } else if (shopMenu) { #if defined (IOS) || defined (ANDROID) if ((cycleCardsButton->ButtonPressed() || showCardListButton->ButtonPressed())) #else if ( (btn == JGE_BTN_OK) && (cycleCardsButton->ButtonPressed() || showCardListButton->ButtonPressed())) #endif { disablePurchase = true; return; } else #if defined (IOS) || defined (ANDROID) if (clearInput && (btn == JGE_BTN_OK)) { clearInput = false; disablePurchase = false; return; } else #endif if (shopMenu->CheckUserInput(btn)) srcCards->Touch(); } if (shopMenu) shopMenu->Update(dt); break; case STAGE_FADE_IN: mParent->DoAnimation(TRANSITION_FADE_IN); mStage = STAGE_SHOP_SHOP; break; } }