mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-19 17:02:15 -07:00
Support Picking Select Art per Card Basis
This commit is contained in:
parent
ed907d7c6f
commit
7e336c6c2c
11 changed files with 100 additions and 0 deletions
|
|
@ -128,6 +128,7 @@ set(cockatrice_SOURCES
|
||||||
src/settings/cache_settings.cpp
|
src/settings/cache_settings.cpp
|
||||||
src/settings/shortcuts_settings.cpp
|
src/settings/shortcuts_settings.cpp
|
||||||
src/settings/shortcut_treeview.cpp
|
src/settings/shortcut_treeview.cpp
|
||||||
|
src/settings/card_override_settings.cpp
|
||||||
src/client/sound_engine.cpp
|
src/client/sound_engine.cpp
|
||||||
src/client/network/spoiler_background_updater.cpp
|
src/client/network/spoiler_background_updater.cpp
|
||||||
src/game/zones/stack_zone.cpp
|
src/game/zones/stack_zone.cpp
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,19 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
||||||
setsToUse = filteredSets;
|
setsToUse = filteredSets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto &cardProviderId =
|
||||||
|
SettingsCache::instance().cardOverrides().getCardPreferenceOverride(selectedCard->getName());
|
||||||
|
if (!cardProviderId.isEmpty()) {
|
||||||
|
for (int i = 0; i < setsToUse.size(); ++i) {
|
||||||
|
const auto &card = setsToUse[i];
|
||||||
|
if (card.getProperty("uuid") == cardProviderId) {
|
||||||
|
setsToUse.prepend(card);
|
||||||
|
setsToUse.removeAt(i + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Defer widget creation
|
// Defer widget creation
|
||||||
currentIndex = 0;
|
currentIndex = 0;
|
||||||
|
|
||||||
|
|
@ -182,6 +195,8 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
||||||
setsToUse[currentIndex], currentZone);
|
setsToUse[currentIndex], currentZone);
|
||||||
flowWidget->addWidget(cardDisplayWidget);
|
flowWidget->addWidget(cardDisplayWidget);
|
||||||
cardDisplayWidget->clampSetNameToPicture();
|
cardDisplayWidget->clampSetNameToPicture();
|
||||||
|
connect(cardDisplayWidget, &PrintingSelectorCardDisplayWidget::cardPreferenceChanged, this,
|
||||||
|
&PrintingSelector::updateDisplay);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop timer when done
|
// Stop timer when done
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
|
||||||
// Create the overlay widget for the card display
|
// Create the overlay widget for the card display
|
||||||
overlayWidget = new PrintingSelectorCardOverlayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
overlayWidget = new PrintingSelectorCardOverlayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
||||||
rootCard, setInfoForCard);
|
rootCard, setInfoForCard);
|
||||||
|
connect(overlayWidget, &PrintingSelectorCardOverlayWidget::cardPreferenceChanged, this,
|
||||||
|
[this]() { emit cardPreferenceChanged(); });
|
||||||
|
|
||||||
// Create the widget to display the set name and collector's number
|
// Create the widget to display the set name and collector's number
|
||||||
const QString combinedSetName =
|
const QString combinedSetName =
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,9 @@ public:
|
||||||
public slots:
|
public slots:
|
||||||
void clampSetNameToPicture();
|
void clampSetNameToPicture();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void cardPreferenceChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
SetNameAndCollectorsNumberDisplayWidget *setNameAndCollectorsNumberDisplayWidget;
|
SetNameAndCollectorsNumberDisplayWidget *setNameAndCollectorsNumberDisplayWidget;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "printing_selector_card_overlay_widget.h"
|
#include "printing_selector_card_overlay_widget.h"
|
||||||
|
|
||||||
#include "../../../../game/cards/card_database_manager.h"
|
#include "../../../../game/cards/card_database_manager.h"
|
||||||
|
#include "../../../../settings/cache_settings.h"
|
||||||
#include "printing_selector_card_display_widget.h"
|
#include "printing_selector_card_display_widget.h"
|
||||||
|
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
|
@ -165,6 +166,29 @@ void PrintingSelectorCardOverlayWidget::leaveEvent(QEvent *event)
|
||||||
void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
|
void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
|
||||||
{
|
{
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
|
|
||||||
|
auto *preferenceMenu = new QMenu(tr("Preference"));
|
||||||
|
menu.addMenu(preferenceMenu);
|
||||||
|
QString preferredProviderId =
|
||||||
|
SettingsCache::instance().cardOverrides().getCardPreferenceOverride(rootCard->getName());
|
||||||
|
|
||||||
|
const auto &cardProviderId = setInfoForCard.getProperty("uuid");
|
||||||
|
|
||||||
|
if (preferredProviderId.isEmpty() || preferredProviderId != cardProviderId) {
|
||||||
|
QAction *setPreferred = preferenceMenu->addAction(tr("Set as preferred printing"));
|
||||||
|
connect(setPreferred, &QAction::triggered, this, [this, cardProviderId]() {
|
||||||
|
SettingsCache::instance().cardOverrides().setCardPreferenceOverride(rootCard->getName(), cardProviderId,
|
||||||
|
true);
|
||||||
|
emit cardPreferenceChanged();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
QAction *setUnpreferred = preferenceMenu->addAction(tr("Unset as preferred printing"));
|
||||||
|
connect(setUnpreferred, &QAction::triggered, this, [this]() {
|
||||||
|
SettingsCache::instance().cardOverrides().setCardPreferenceOverride(rootCard->getName(), "", false);
|
||||||
|
emit cardPreferenceChanged();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// filling out the related cards submenu
|
// filling out the related cards submenu
|
||||||
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
||||||
menu.addMenu(relatedMenu);
|
menu.addMenu(relatedMenu);
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@ protected:
|
||||||
void mousePressEvent(QMouseEvent *event) override;
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
void customMenu(QPoint point);
|
void customMenu(QPoint point);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void cardPreferenceChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CardInfoPictureWidget *cardInfoPicture;
|
CardInfoPictureWidget *cardInfoPicture;
|
||||||
AllZonesCardAmountWidget *allZonesCardAmountWidget;
|
AllZonesCardAmountWidget *allZonesCardAmountWidget;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "cache_settings.h"
|
#include "cache_settings.h"
|
||||||
|
|
||||||
#include "../client/network/release_channel.h"
|
#include "../client/network/release_channel.h"
|
||||||
|
#include "card_override_settings.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
@ -179,6 +180,7 @@ SettingsCache::SettingsCache()
|
||||||
layoutsSettings = new LayoutsSettings(settingsPath, this);
|
layoutsSettings = new LayoutsSettings(settingsPath, this);
|
||||||
downloadSettings = new DownloadSettings(settingsPath, this);
|
downloadSettings = new DownloadSettings(settingsPath, this);
|
||||||
recentsSettings = new RecentsSettings(settingsPath, this);
|
recentsSettings = new RecentsSettings(settingsPath, this);
|
||||||
|
cardOverrideSettings = new CardOverrideSettings(settingsPath, this);
|
||||||
|
|
||||||
if (!QFile(settingsPath + "global.ini").exists())
|
if (!QFile(settingsPath + "global.ini").exists())
|
||||||
translateLegacySettings();
|
translateLegacySettings();
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "../utility/macros.h"
|
#include "../utility/macros.h"
|
||||||
#include "card_database_settings.h"
|
#include "card_database_settings.h"
|
||||||
|
#include "card_override_settings.h"
|
||||||
#include "download_settings.h"
|
#include "download_settings.h"
|
||||||
#include "game_filters_settings.h"
|
#include "game_filters_settings.h"
|
||||||
#include "layouts_settings.h"
|
#include "layouts_settings.h"
|
||||||
|
|
@ -84,6 +85,7 @@ private:
|
||||||
LayoutsSettings *layoutsSettings;
|
LayoutsSettings *layoutsSettings;
|
||||||
DownloadSettings *downloadSettings;
|
DownloadSettings *downloadSettings;
|
||||||
RecentsSettings *recentsSettings;
|
RecentsSettings *recentsSettings;
|
||||||
|
CardOverrideSettings *cardOverrideSettings;
|
||||||
|
|
||||||
QByteArray mainWindowGeometry;
|
QByteArray mainWindowGeometry;
|
||||||
QByteArray tokenDialogGeometry;
|
QByteArray tokenDialogGeometry;
|
||||||
|
|
@ -604,6 +606,10 @@ public:
|
||||||
{
|
{
|
||||||
return *recentsSettings;
|
return *recentsSettings;
|
||||||
}
|
}
|
||||||
|
CardOverrideSettings &cardOverrides() const
|
||||||
|
{
|
||||||
|
return *cardOverrideSettings;
|
||||||
|
}
|
||||||
bool getIsPortableBuild() const
|
bool getIsPortableBuild() const
|
||||||
{
|
{
|
||||||
return isPortableBuild;
|
return isPortableBuild;
|
||||||
|
|
|
||||||
20
cockatrice/src/settings/card_override_settings.cpp
Normal file
20
cockatrice/src/settings/card_override_settings.cpp
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "card_override_settings.h"
|
||||||
|
|
||||||
|
CardOverrideSettings::CardOverrideSettings(QString settingPath, QObject *parent)
|
||||||
|
: SettingsManager(settingPath + "cardPreferenceOverrides.ini", parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardOverrideSettings::setCardPreferenceOverride(QString cardName, QString providerId, bool enabled)
|
||||||
|
{
|
||||||
|
if (enabled) {
|
||||||
|
setValue(providerId, cardName, "cards");
|
||||||
|
} else {
|
||||||
|
deleteValue(providerId, cardName, "cards");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CardOverrideSettings::getCardPreferenceOverride(QString cardName)
|
||||||
|
{
|
||||||
|
return getValue(cardName, "cards").toString();
|
||||||
|
}
|
||||||
23
cockatrice/src/settings/card_override_settings.h
Normal file
23
cockatrice/src/settings/card_override_settings.h
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef COCKATRICE_CARD_OVERRIDE_SETTINGS_H
|
||||||
|
#define COCKATRICE_CARD_OVERRIDE_SETTINGS_H
|
||||||
|
|
||||||
|
#include "settings_manager.h"
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class CardOverrideSettings : public SettingsManager
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
friend class SettingsCache;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setCardPreferenceOverride(QString cardName, QString providerId, bool enabled);
|
||||||
|
|
||||||
|
QString getCardPreferenceOverride(QString cardName);
|
||||||
|
|
||||||
|
private:
|
||||||
|
explicit CardOverrideSettings(QString settingPath, QObject *parent = nullptr);
|
||||||
|
CardOverrideSettings(const CardOverrideSettings & /*other*/);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // COCKATRICE_CARD_OVERRIDE_SETTINGS_H
|
||||||
|
|
@ -32,6 +32,7 @@ set(oracle_SOURCES
|
||||||
../cockatrice/src/settings/game_filters_settings.cpp
|
../cockatrice/src/settings/game_filters_settings.cpp
|
||||||
../cockatrice/src/settings/layouts_settings.cpp
|
../cockatrice/src/settings/layouts_settings.cpp
|
||||||
../cockatrice/src/settings/download_settings.cpp
|
../cockatrice/src/settings/download_settings.cpp
|
||||||
|
../cockatrice/src/settings/card_override_settings.cpp
|
||||||
../cockatrice/src/client/ui/theme_manager.cpp
|
../cockatrice/src/client/ui/theme_manager.cpp
|
||||||
../cockatrice/src/client/network/release_channel.cpp
|
../cockatrice/src/client/network/release_channel.cpp
|
||||||
${VERSION_STRING_CPP}
|
${VERSION_STRING_CPP}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue