diff --git a/common/decklist.cpp b/common/decklist.cpp index 088cae5b..7c1430a6 100644 --- a/common/decklist.cpp +++ b/common/decklist.cpp @@ -417,6 +417,7 @@ bool DeckList::loadFromStream_Plain(QTextStream &in) cleanList(); InnerDecklistNode *main = 0, *side = 0; + bool inSideboard = false; int okRows = 0; while (!in.atEnd()) { @@ -425,11 +426,18 @@ bool DeckList::loadFromStream_Plain(QTextStream &in) continue; InnerDecklistNode *zone; - if (line.startsWith("SB:", Qt::CaseInsensitive)) { + if (line.startsWith("Sideboard", Qt::CaseInsensitive)) { + inSideboard = true; + continue; + } else if (line.startsWith("SB:", Qt::CaseInsensitive)) { line = line.mid(3).trimmed(); if (!side) side = new InnerDecklistNode("side", root); zone = side; + } else if (inSideboard) { + if (!side) + side = new InnerDecklistNode("side", root); + zone = side; } else { if (!main) main = new InnerDecklistNode("main", root); @@ -448,8 +456,21 @@ bool DeckList::loadFromStream_Plain(QTextStream &in) int number = line.left(i).toInt(&ok); if (!ok) continue; + + QString cardName = line.mid(i + 1); + // Common differences between cockatrice's card names + // and what's commonly used in decklists + rx.setPattern("’"); + cardName.replace(rx, "'"); + rx.setPattern("Æ"); + cardName.replace(rx, "AE"); + rx.setPattern("^Aether"); + cardName.replace(rx, "AEther"); + rx.setPattern("\\s*[&|/]{1,2}\\s*"); + cardName.replace(rx, " // "); + ++okRows; - new DecklistCardNode(line.mid(i + 1), number, zone); + new DecklistCardNode(cardName, number, zone); } updateDeckHash(); return (okRows > 0);