fix: Use isRebalanced to detect Arena cards (#5778)

* fix: Use isRebalanced to detect Arena cards

In #5759 we introduced a setting (off by default) to disable the use of
Arena cards. This was done by checking the `isOnlineOnly` property of
the card, which accidentally also disabled online *printings* of cards
that otherwise exist in paper (e.g. Vintage Masters).

This PR does the same thing but uses the `isRebalanced` property
instead, which is `true` for Arena cards only and should have been used
from the start. This setting does not impact online-only printings such
as Vintage Masters. The settings is still on by default.

* Update setting to mention Alchemy rather than Arena
This commit is contained in:
Basile Clement 2025-04-03 06:16:38 +02:00 committed by GitHub
parent 70f2a32fad
commit 2fcdb52157
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 31 additions and 26 deletions

View file

@ -163,10 +163,11 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent)
sortWarning->setLayout(sortWarningLayout); sortWarning->setLayout(sortWarningLayout);
sortWarning->setVisible(false); sortWarning->setVisible(false);
includeOnlineOnlyCards = SettingsCache::instance().getIncludeOnlineOnlyCards(); includeRebalancedCards = SettingsCache::instance().getIncludeRebalancedCards();
QCheckBox *onlineOnly = new QCheckBox(tr("Include online-only (Arena) cards [requires restart]")); QCheckBox *includeRebalancedCardsCheckBox =
onlineOnly->setChecked(includeOnlineOnlyCards); new QCheckBox(tr("Include cards rebalanced for Alchemy [requires restart]"));
connect(onlineOnly, &QAbstractButton::toggled, this, &WndSets::includeOnlineOnlyCardsChanged); includeRebalancedCardsCheckBox->setChecked(includeRebalancedCards);
connect(includeRebalancedCardsCheckBox, &QAbstractButton::toggled, this, &WndSets::includeRebalancedCardsChanged);
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(actSave())); connect(buttonBox, SIGNAL(accepted()), this, SLOT(actSave()));
@ -181,7 +182,7 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent)
mainLayout->addWidget(enableSomeButton, 2, 1); mainLayout->addWidget(enableSomeButton, 2, 1);
mainLayout->addWidget(disableSomeButton, 2, 2); mainLayout->addWidget(disableSomeButton, 2, 2);
mainLayout->addWidget(sortWarning, 3, 1, 1, 2); mainLayout->addWidget(sortWarning, 3, 1, 1, 2);
mainLayout->addWidget(onlineOnly, 4, 1, 1, 2); mainLayout->addWidget(includeRebalancedCardsCheckBox, 4, 1, 1, 2);
mainLayout->addWidget(hintsGroupBox, 5, 1, 1, 2); mainLayout->addWidget(hintsGroupBox, 5, 1, 1, 2);
mainLayout->addWidget(buttonBox, 6, 1, 1, 2); mainLayout->addWidget(buttonBox, 6, 1, 1, 2);
mainLayout->setColumnStretch(1, 1); mainLayout->setColumnStretch(1, 1);
@ -246,15 +247,15 @@ void WndSets::rebuildMainLayout(int actionToTake)
} }
} }
void WndSets::includeOnlineOnlyCardsChanged(bool _includeOnlineOnlyCards) void WndSets::includeRebalancedCardsChanged(bool _includeRebalancedCards)
{ {
includeOnlineOnlyCards = _includeOnlineOnlyCards; includeRebalancedCards = _includeRebalancedCards;
} }
void WndSets::actSave() void WndSets::actSave()
{ {
model->save(CardDatabaseManager::getInstance()); model->save(CardDatabaseManager::getInstance());
SettingsCache::instance().setIncludeOnlineOnlyCards(includeOnlineOnlyCards); SettingsCache::instance().setIncludeRebalancedCards(includeRebalancedCards);
PictureLoader::clearPixmapCache(); PictureLoader::clearPixmapCache();
close(); close();
} }

View file

@ -44,7 +44,7 @@ private:
void saveHeaderState(); void saveHeaderState();
void rebuildMainLayout(int actionToTake); void rebuildMainLayout(int actionToTake);
bool setOrderIsSorted; bool setOrderIsSorted;
bool includeOnlineOnlyCards; bool includeRebalancedCards;
enum enum
{ {
NO_SETS_SELECTED, NO_SETS_SELECTED,
@ -74,7 +74,7 @@ private slots:
void actDisableResetButton(const QString &filterText); void actDisableResetButton(const QString &filterText);
void actSort(int index); void actSort(int index);
void actIgnoreWarning(); void actIgnoreWarning();
void includeOnlineOnlyCardsChanged(bool _includeOnlineOnlyCardsChanged); void includeRebalancedCardsChanged(bool _includeRebalancedCardsChanged);
}; };
#endif #endif

View file

@ -126,7 +126,7 @@ QVariantHash CockatriceXml4Parser::loadCardPropertiesFromXml(QXmlStreamReader &x
void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml) void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml)
{ {
bool includeOnlineOnlyCards = SettingsCache::instance().getIncludeOnlineOnlyCards(); bool includeRebalancedCards = SettingsCache::instance().getIncludeRebalancedCards();
while (!xml.atEnd()) { while (!xml.atEnd()) {
if (xml.readNext() == QXmlStreamReader::EndElement) { if (xml.readNext() == QXmlStreamReader::EndElement) {
break; break;
@ -194,7 +194,7 @@ void CockatriceXml4Parser::loadCardsFromXml(QXmlStreamReader &xml)
// However, this is also true of the `set->getEnabled()` // However, this is also true of the `set->getEnabled()`
// check above (which is currently bugged as well), so // check above (which is currently bugged as well), so
// we'll fix both at the same time. // we'll fix both at the same time.
if (includeOnlineOnlyCards || setInfo.getProperty("isOnlineOnly") != "true") { if (includeRebalancedCards || setInfo.getProperty("isRebalanced") != "true") {
_sets[setName].append(setInfo); _sets[setName].append(setInfo);
} }
} }

View file

@ -260,7 +260,7 @@ SettingsCache::SettingsCache()
bumpSetsWithCardsInDeckToTop = settings->value("cards/bumpsetswithcardsindecktotop", true).toBool(); bumpSetsWithCardsInDeckToTop = settings->value("cards/bumpsetswithcardsindecktotop", true).toBool();
printingSelectorSortOrder = settings->value("cards/printingselectorsortorder", 1).toInt(); printingSelectorSortOrder = settings->value("cards/printingselectorsortorder", 1).toInt();
printingSelectorCardSize = settings->value("cards/printingselectorcardsize", 100).toInt(); printingSelectorCardSize = settings->value("cards/printingselectorcardsize", 100).toInt();
includeOnlineOnlyCards = settings->value("cards/includeonlineonlycards", false).toBool(); includeRebalancedCards = settings->value("cards/includerebalancedcards", true).toBool();
printingSelectorNavigationButtonsVisible = printingSelectorNavigationButtonsVisible =
settings->value("cards/printingselectornavigationbuttonsvisible", true).toBool(); settings->value("cards/printingselectornavigationbuttonsvisible", true).toBool();
visualDeckStorageCardSize = settings->value("interface/visualdeckstoragecardsize", 100).toInt(); visualDeckStorageCardSize = settings->value("interface/visualdeckstoragecardsize", 100).toInt();
@ -656,11 +656,14 @@ void SettingsCache::setPrintingSelectorCardSize(int _printingSelectorCardSize)
emit printingSelectorCardSizeChanged(); emit printingSelectorCardSizeChanged();
} }
void SettingsCache::setIncludeOnlineOnlyCards(bool _includeOnlineOnlyCards) void SettingsCache::setIncludeRebalancedCards(bool _includeRebalancedCards)
{ {
includeOnlineOnlyCards = _includeOnlineOnlyCards; if (includeRebalancedCards == _includeRebalancedCards)
settings->setValue("cards/includeonlineonlycards", includeOnlineOnlyCards); return;
emit includeOnlineOnlyCardsChanged(includeOnlineOnlyCards);
includeRebalancedCards = _includeRebalancedCards;
settings->setValue("cards/includerebalancedcards", includeRebalancedCards);
emit includeRebalancedCardsChanged(includeRebalancedCards);
} }
void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible) void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible)

View file

@ -59,7 +59,7 @@ signals:
void bumpSetsWithCardsInDeckToTopChanged(); void bumpSetsWithCardsInDeckToTopChanged();
void printingSelectorSortOrderChanged(); void printingSelectorSortOrderChanged();
void printingSelectorCardSizeChanged(); void printingSelectorCardSizeChanged();
void includeOnlineOnlyCardsChanged(bool _includeOnlineOnlyCards); void includeRebalancedCardsChanged(bool _includeRebalancedCards);
void printingSelectorNavigationButtonsVisibleChanged(); void printingSelectorNavigationButtonsVisibleChanged();
void visualDeckStorageShowTagFilterChanged(bool _visible); void visualDeckStorageShowTagFilterChanged(bool _visible);
void visualDeckStorageShowBannerCardComboBoxChanged(bool _visible); void visualDeckStorageShowBannerCardComboBoxChanged(bool _visible);
@ -131,7 +131,7 @@ private:
bool bumpSetsWithCardsInDeckToTop; bool bumpSetsWithCardsInDeckToTop;
int printingSelectorSortOrder; int printingSelectorSortOrder;
int printingSelectorCardSize; int printingSelectorCardSize;
bool includeOnlineOnlyCards; bool includeRebalancedCards;
bool printingSelectorNavigationButtonsVisible; bool printingSelectorNavigationButtonsVisible;
int visualDeckStorageSortingOrder; int visualDeckStorageSortingOrder;
bool visualDeckStorageShowFolders; bool visualDeckStorageShowFolders;
@ -406,9 +406,9 @@ public:
{ {
return printingSelectorCardSize; return printingSelectorCardSize;
} }
bool getIncludeOnlineOnlyCards() const bool getIncludeRebalancedCards() const
{ {
return includeOnlineOnlyCards; return includeRebalancedCards;
} }
bool getPrintingSelectorNavigationButtonsVisible() const bool getPrintingSelectorNavigationButtonsVisible() const
{ {
@ -787,7 +787,7 @@ public slots:
void setBumpSetsWithCardsInDeckToTop(QT_STATE_CHANGED_T _bumpSetsWithCardsInDeckToTop); void setBumpSetsWithCardsInDeckToTop(QT_STATE_CHANGED_T _bumpSetsWithCardsInDeckToTop);
void setPrintingSelectorSortOrder(int _printingSelectorSortOrder); void setPrintingSelectorSortOrder(int _printingSelectorSortOrder);
void setPrintingSelectorCardSize(int _printingSelectorCardSize); void setPrintingSelectorCardSize(int _printingSelectorCardSize);
void setIncludeOnlineOnlyCards(bool _includeOnlineOnlyCards); void setIncludeRebalancedCards(bool _includeRebalancedCards);
void setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible); void setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T _navigationButtonsVisible);
void setVisualDeckStorageSortingOrder(int _visualDeckStorageSortingOrder); void setVisualDeckStorageSortingOrder(int _visualDeckStorageSortingOrder);
void setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T value); void setVisualDeckStorageShowFolders(QT_STATE_CHANGED_T value);

View file

@ -199,7 +199,7 @@ void SettingsCache::setPrintingSelectorSortOrder(int /* _printingSelectorSortOrd
void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */) void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */)
{ {
} }
void SettingsCache::setIncludeOnlineOnlyCards(bool /* _includeOnlineOnlyCards */) void SettingsCache::setIncludeRebalancedCards(bool /* _includeRebalancedCards */)
{ {
} }
void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */) void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */)

View file

@ -28,7 +28,8 @@
<xs:attribute type="xs:anyURI" name="picURL" use="optional" /> <xs:attribute type="xs:anyURI" name="picURL" use="optional" />
<xs:attribute type="xs:string" name="num" use="optional" /> <xs:attribute type="xs:string" name="num" use="optional" />
<xs:attribute type="xs:string" name="rarity" use="optional" /> <xs:attribute type="xs:string" name="rarity" use="optional" />
<xs:attribute type="xs:boolean" name="onlineOnly" use="optional" /> <xs:attribute type="xs:boolean" name="isOnlineOnly" use="optional" />
<xs:attribute type="xs:boolean" name="isRebalanced" use="optional" />
</xs:extension> </xs:extension>
</xs:simpleContent> </xs:simpleContent>
</xs:complexType> </xs:complexType>

View file

@ -213,7 +213,7 @@ int OracleImporter::importCardsFromSet(const CardSetPtr &currentSet, const QList
// mtgjson name => xml name // mtgjson name => xml name
static const QMap<QString, QString> setInfoProperties{ static const QMap<QString, QString> setInfoProperties{
{"number", "num"}, {"rarity", "rarity"}, {"isOnlineOnly", "isOnlineOnly"}}; {"number", "num"}, {"rarity", "rarity"}, {"isOnlineOnly", "isOnlineOnly"}, {"isRebalanced", "isRebalanced"}};
// mtgjson name => xml name // mtgjson name => xml name
static const QMap<QString, QString> identifierProperties{{"multiverseId", "muid"}, {"scryfallId", "uuid"}}; static const QMap<QString, QString> identifierProperties{{"multiverseId", "muid"}, {"scryfallId", "uuid"}};

View file

@ -203,7 +203,7 @@ void SettingsCache::setPrintingSelectorSortOrder(int /* _printingSelectorSortOrd
void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */) void SettingsCache::setPrintingSelectorCardSize(int /* _printingSelectorCardSize */)
{ {
} }
void SettingsCache::setIncludeOnlineOnlyCards(bool /* _includeOnlineOnlyCards */) void SettingsCache::setIncludeRebalancedCards(bool /* _includeRebalancedCards */)
{ {
} }
void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */) void SettingsCache::setPrintingSelectorNavigationButtonsVisible(QT_STATE_CHANGED_T /* _navigationButtonsVisible */)