WCardFilter * WCFilterFactory::Terminal(string src, string arg) { string type; for (size_t x = 0; x < src.size(); x++) { if (isspace(src[x])) continue; type += src[x]; } std::transform(type.begin(), type.end(), type.begin(), ::tolower); if (type == "r" || type == "rarity") return NEW WCFilterRarity(arg); else if (type == "c" || type == "color") return NEW WCFilterColor(arg); else if (type == "xc" || type == "xcolor") return NEW WCFilterOnlyColor(arg); else if (type == "s" || type == "set") return NEW WCFilterSet(arg); else if (type == "alpha") return NEW WCFilterLetter(arg); else if (type == "t" || type == "type") return NEW WCFilterType(arg); else if (type == "a" || type == "ability") return NEW WCFilterAbility(arg); else if (type == "cmc") return NEW WCFilterCMC(arg); else if (type == "produces" || type == "ma") return NEW WCFilterProducesColor(arg); else if (type == "pow" || type == "power") return NEW WCFilterPower(arg); else if (type == "tgh" || type == "tough" || type == "toughness") return NEW WCFilterToughness(arg); return NEW WCFilterNULL(); }
void GameStateShop::Start() { menu = NULL; bListCards = false; mTouched = false; mStage = STAGE_FADE_IN; mElapsed = 0; needLoad = true; booster = NULL; srcCards = NEW WSrcUnlockedCards(0); srcCards->setElapsed(15); srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterRarity("T"))); srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterSet(MTGSets::INTERNAL_SET))); bigSync = 0; shopMenu = NEW WGuiMenu(JGE_BTN_DOWN, JGE_BTN_UP, true, &bigSync); MTGAllCards * ac = MTGCollection(); playerdata = NEW PlayerData(ac); myCollection = NEW DeckDataWrapper(playerdata->collection); pricelist = NEW PriceList("settings/prices.dat", ac); for (int i = 0; i < SHOP_SLOTS; i++) { WGuiCardDistort * dist; if (i < BOOSTER_SLOTS) dist = NEW WGuiCardDistort(NULL, true); else { dist = NEW WGuiCardDistort(srcCards, true); dist->mOffset.setOffset(i - BOOSTER_SLOTS); } dist->xy = WDistort(_x1[i], _y1[i], _x2[i], _y2[i], _x3[i], _y3[i], _x4[i], _y4[i]); shopMenu->Add(NEW WGuiButton(dist, -102, i, this)); } shopMenu->Entering(JGE_BTN_NONE); if (!bigDisplay) { bigDisplay = NEW WGuiCardImage(srcCards); bigDisplay->mOffset.Hook(&bigSync); bigDisplay->mOffset.setOffset(-BOOSTER_SLOTS); bigDisplay->setX(385); bigDisplay->setY(135); } for (int i = 0; i < 8; ++i) { std::ostringstream stream; stream << "iconspsp" << i; pspIcons[i] = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float) i * 32, 0, 32, 32, stream.str(), RETRIEVE_MANAGE); pspIcons[i]->SetHotSpot(16, 16); } JRenderer::GetInstance()->EnableVSync(true); taskList = NULL; packlist = NEW MTGPacks(); packlist->loadAll(); load(); }
bool GameStateAwards::enterSet(int setid) { MTGSetInfo * si = setlist.getInfo(setid); map<int, MTGCard *>::iterator it; if (!si) return false; SAFE_DELETE(detailview); SAFE_DELETE(setSrc); setSrc = NEW WSrcCards(); setSrc->addFilter(NEW WCFilterSet(setid)); setSrc->loadMatches(MTGCollection()); setSrc->bakeFilters(); setSrc->Sort(WSrcCards::SORT_COLLECTOR); detailview = NEW WGuiMenu(JGE_BTN_DOWN, JGE_BTN_UP); WGuiList * spoiler = NEW WGuiList("Spoiler", setSrc); spoiler->setX(210); spoiler->setWidth(SCREEN_WIDTH - 220); for (int t = 0; t < setSrc->Size(); t++) { MTGCard * c = setSrc->getCard(t); if (c) spoiler->Add(NEW WGuiItem(c->data->name)); } setSrc->setOffset(0); spoiler->Entering(JGE_BTN_NONE); WGuiCardImage * wi = NEW WGuiCardImage(setSrc); wi->setX(105); wi->setY(137); detailview->Add(wi); detailview->Add(spoiler); detailview->Entering(JGE_BTN_NONE); return true; }
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; } }