Made Ctrl-V importer work more robust.
This commit is contained in:
parent
92ff503832
commit
b57d628278
1 changed files with 23 additions and 2 deletions
|
@ -417,6 +417,7 @@ bool DeckList::loadFromStream_Plain(QTextStream &in)
|
||||||
cleanList();
|
cleanList();
|
||||||
|
|
||||||
InnerDecklistNode *main = 0, *side = 0;
|
InnerDecklistNode *main = 0, *side = 0;
|
||||||
|
bool inSideboard = false;
|
||||||
|
|
||||||
int okRows = 0;
|
int okRows = 0;
|
||||||
while (!in.atEnd()) {
|
while (!in.atEnd()) {
|
||||||
|
@ -425,11 +426,18 @@ bool DeckList::loadFromStream_Plain(QTextStream &in)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
InnerDecklistNode *zone;
|
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();
|
line = line.mid(3).trimmed();
|
||||||
if (!side)
|
if (!side)
|
||||||
side = new InnerDecklistNode("side", root);
|
side = new InnerDecklistNode("side", root);
|
||||||
zone = side;
|
zone = side;
|
||||||
|
} else if (inSideboard) {
|
||||||
|
if (!side)
|
||||||
|
side = new InnerDecklistNode("side", root);
|
||||||
|
zone = side;
|
||||||
} else {
|
} else {
|
||||||
if (!main)
|
if (!main)
|
||||||
main = new InnerDecklistNode("main", root);
|
main = new InnerDecklistNode("main", root);
|
||||||
|
@ -448,8 +456,21 @@ bool DeckList::loadFromStream_Plain(QTextStream &in)
|
||||||
int number = line.left(i).toInt(&ok);
|
int number = line.left(i).toInt(&ok);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
continue;
|
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;
|
++okRows;
|
||||||
new DecklistCardNode(line.mid(i + 1), number, zone);
|
new DecklistCardNode(cardName, number, zone);
|
||||||
}
|
}
|
||||||
updateDeckHash();
|
updateDeckHash();
|
||||||
return (okRows > 0);
|
return (okRows > 0);
|
||||||
|
|
Loading…
Reference in a new issue