mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-19 00:42:14 -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/shortcuts_settings.cpp
|
||||
src/settings/shortcut_treeview.cpp
|
||||
src/settings/card_override_settings.cpp
|
||||
src/client/sound_engine.cpp
|
||||
src/client/network/spoiler_background_updater.cpp
|
||||
src/game/zones/stack_zone.cpp
|
||||
|
|
|
|||
|
|
@ -172,6 +172,19 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
|||
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
|
||||
currentIndex = 0;
|
||||
|
||||
|
|
@ -182,6 +195,8 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
|||
setsToUse[currentIndex], currentZone);
|
||||
flowWidget->addWidget(cardDisplayWidget);
|
||||
cardDisplayWidget->clampSetNameToPicture();
|
||||
connect(cardDisplayWidget, &PrintingSelectorCardDisplayWidget::cardPreferenceChanged, this,
|
||||
&PrintingSelector::updateDisplay);
|
||||
}
|
||||
|
||||
// Stop timer when done
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
|
|||
// Create the overlay widget for the card display
|
||||
overlayWidget = new PrintingSelectorCardOverlayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
||||
rootCard, setInfoForCard);
|
||||
connect(overlayWidget, &PrintingSelectorCardOverlayWidget::cardPreferenceChanged, this,
|
||||
[this]() { emit cardPreferenceChanged(); });
|
||||
|
||||
// Create the widget to display the set name and collector's number
|
||||
const QString combinedSetName =
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ public:
|
|||
public slots:
|
||||
void clampSetNameToPicture();
|
||||
|
||||
signals:
|
||||
void cardPreferenceChanged();
|
||||
|
||||
private:
|
||||
QVBoxLayout *layout;
|
||||
SetNameAndCollectorsNumberDisplayWidget *setNameAndCollectorsNumberDisplayWidget;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include "printing_selector_card_overlay_widget.h"
|
||||
|
||||
#include "../../../../game/cards/card_database_manager.h"
|
||||
#include "../../../../settings/cache_settings.h"
|
||||
#include "printing_selector_card_display_widget.h"
|
||||
|
||||
#include <QMenu>
|
||||
|
|
@ -165,6 +166,29 @@ void PrintingSelectorCardOverlayWidget::leaveEvent(QEvent *event)
|
|||
void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
|
||||
{
|
||||
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
|
||||
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
||||
menu.addMenu(relatedMenu);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ protected:
|
|||
void mousePressEvent(QMouseEvent *event) override;
|
||||
void customMenu(QPoint point);
|
||||
|
||||
signals:
|
||||
void cardPreferenceChanged();
|
||||
|
||||
private:
|
||||
CardInfoPictureWidget *cardInfoPicture;
|
||||
AllZonesCardAmountWidget *allZonesCardAmountWidget;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include "cache_settings.h"
|
||||
|
||||
#include "../client/network/release_channel.h"
|
||||
#include "card_override_settings.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDebug>
|
||||
|
|
@ -179,6 +180,7 @@ SettingsCache::SettingsCache()
|
|||
layoutsSettings = new LayoutsSettings(settingsPath, this);
|
||||
downloadSettings = new DownloadSettings(settingsPath, this);
|
||||
recentsSettings = new RecentsSettings(settingsPath, this);
|
||||
cardOverrideSettings = new CardOverrideSettings(settingsPath, this);
|
||||
|
||||
if (!QFile(settingsPath + "global.ini").exists())
|
||||
translateLegacySettings();
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "../utility/macros.h"
|
||||
#include "card_database_settings.h"
|
||||
#include "card_override_settings.h"
|
||||
#include "download_settings.h"
|
||||
#include "game_filters_settings.h"
|
||||
#include "layouts_settings.h"
|
||||
|
|
@ -84,6 +85,7 @@ private:
|
|||
LayoutsSettings *layoutsSettings;
|
||||
DownloadSettings *downloadSettings;
|
||||
RecentsSettings *recentsSettings;
|
||||
CardOverrideSettings *cardOverrideSettings;
|
||||
|
||||
QByteArray mainWindowGeometry;
|
||||
QByteArray tokenDialogGeometry;
|
||||
|
|
@ -604,6 +606,10 @@ public:
|
|||
{
|
||||
return *recentsSettings;
|
||||
}
|
||||
CardOverrideSettings &cardOverrides() const
|
||||
{
|
||||
return *cardOverrideSettings;
|
||||
}
|
||||
bool getIsPortableBuild() const
|
||||
{
|
||||
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/layouts_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/network/release_channel.cpp
|
||||
${VERSION_STRING_CPP}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue