Example #1
0
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();
}
Example #2
0
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();
}
Example #3
0
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;
}
Example #4
0
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;
    }
}