Пример #1
0
void WebUploader::GetArenaCards(QString &html)
{
    //Ejemplo html
    //<li><a href='#deck' data-toggle='tab'>Cards: List & Info</a></li>

    if(html.contains("<li><a href='#deck' data-toggle='tab'>Cards: List & Info</a></li>"))
    {
        deckInWeb = true;
        emit newWebDeckCardList();
        qDebug() << "WebUploader: "<< "Inicio leer deck.";

        //Ejemplo html carta
        //<li id='374' class='list-group-item' data-name='1' data-cost='3' data-total='1' data-remaining='1' data-any='1'>
        //<span style='display: inline-block;'>(3) <a href='http://www.hearthpwn.com/cards/428' onClick='return false;'>Acolyte of Pain</a>
        //</span> (<span id='remaining-374' style='font-weight:bold;'>1</span> copy)</li>
        QRegularExpression re(
            "<li id='\\d+' class='list-group-item' data-name='\\d+' data-cost='\\d+' data-total='(\\d+)' data-remaining='\\d+' data-any='\\d+'>"
            "<span style='display: inline-block;'>.*<a href=.*onClick=.*>(.+)</a> "
            "</span>.*</li>");
        QRegularExpressionMatchIterator reIterator = re.globalMatch(html);

        while (reIterator.hasNext())
        {
            QRegularExpressionMatch match = reIterator.next();
            emit newDeckCard(codeFromName(match.captured(2)), match.captured(1).toInt());
        }
        qDebug() << "WebUploader: "<< "Final leer deck.";
        emit sendLog(tr("Web: Active deck read."));
    }
}
Пример #2
0
void DeckHandler::newDeckCardWeb(QString code, int total)
{
    newDeckCard(code, total, false);
}
Пример #3
0
void DeckHandler::drawFromDeck(QString code)
{
    for (QList<DeckCard>::iterator it = deckCardList.begin(); it != deckCardList.end(); it++)
    {
        if(it->getCode() == code)
        {
            if(it->remaining>1)
            {
                it->remaining--;
                it->draw(false, this->cardHeight);
            }
            else if(it->remaining == 1)
            {
                it->remaining--;
                it->drawGreyed(true, this->greyedHeight);
            }
            //it->remaining == 0
            //MALORNE
            else if(code == MALORNE)  return;
            //Reajustamos el mazo si tiene unknown cards
            else if(deckCardList[0].total>0)
            {
                deckCardList[0].total--;
                if(deckCardList[0].total == 0)  deckCardList[0].listItem->setHidden(true);
                else                            deckCardList[0].draw(true, this->cardHeight);
                it->total++;

                it->drawGreyed(true, this->greyedHeight);

                emit pDebug("New card: " + it->getName());
                emit pLog(tr("Deck: New card: ") + it->getName());
            }
            else
            {
                emit pDebug("New card but deck is full. " + it->getName(), Warning);
                emit pLog(tr("Deck: WARNING: New card but deck is full. Is the deck right? ") + it->getName());
            }
            return;
        }
    }

    //MALORNE
    if(code == MALORNE)  return;


    if(deckCardList[0].total>0)
    {
        emit pDebug("New card: " +
                          (*cardsJson)[code].value("name").toString());
        emit pLog(tr("Deck: New card: ") +
                          (*cardsJson)[code].value("name").toString());
        newDeckCard(code);
        drawFromDeck(code);
    }
    else
    {
        emit pDebug("New card but deck is full. " +
                      (*cardsJson)[code].value("name").toString(), Warning);
        emit pLog(tr("Deck: WARNING: New card but deck is full. Is the deck right? ") +
                      (*cardsJson)[code].value("name").toString());
    }
}
Пример #4
0
void DeckHandler::newDeckCardDraft(QString code)
{
    newDeckCard(code, 1, true);
}