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.")); } }
void DeckHandler::newDeckCardWeb(QString code, int total) { newDeckCard(code, total, false); }
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()); } }
void DeckHandler::newDeckCardDraft(QString code) { newDeckCard(code, 1, true); }