[Playmats] Add fixed override and configurable fallbacks to settings.

Took 29 minutes

Took 43 seconds
This commit is contained in:
Lukas Brübach 2026-08-13 12:40:04 +02:00
parent 92c8f1a1a1
commit fa669544d3
19 changed files with 845 additions and 16 deletions

View file

@ -1,9 +1,30 @@
#ifndef COCKATRICE_INTERFACE_INTERFACE_SETTINGS_PROVIDER_H
#define COCKATRICE_INTERFACE_INTERFACE_SETTINGS_PROVIDER_H
#include <QList>
#include <QString>
#include <QStringList>
/**
* @struct StoredPlaymat
* @brief A user-level playmat entry as stored in the settings, independent of
* any deck. Mirrors a deck-configured playmat (card + parameters).
*/
struct StoredPlaymat
{
QString name; ///< Card name whose art is used as playmat.
QString providerId; ///< Printing provider id (uuid); may be empty.
double marginPctL = 0.07; ///< Left margin as fraction of card width (0.0-0.95).
double marginPctR = 0.07; ///< Right margin as fraction of card width (0.0-0.95).
double verticalOffset = 0.33; ///< Vertical position within card (0.0=top, 1.0=bottom).
double zoom = 1.0; ///< Scale factor (0.1-4.0).
bool isEmpty() const
{
return name.isEmpty();
}
};
class IInterfaceSettingsProvider
{
public:
@ -44,6 +65,15 @@ public:
[[nodiscard]] virtual bool getBattlefieldFlashEnabled() const = 0;
[[nodiscard]] virtual QStringList getUserListExpandedSections() const = 0;
[[nodiscard]] virtual int getPlaymatVisibility() const = 0;
/** @brief User-level fallback playmats, used when a deck has none configured. */
[[nodiscard]] virtual QList<StoredPlaymat> getPlaymatFallbackList() const = 0;
/** @brief User-level override playmat applied to all decks, or empty to disable. */
[[nodiscard]] virtual StoredPlaymat getPlaymatOverride() const = 0;
/** @brief How the fallback list is consulted (0 Fixed, 1 Round-robin, 2 Random). */
[[nodiscard]] virtual int getPlaymatFallbackMode() const = 0;
};
#endif // COCKATRICE_INTERFACE_INTERFACE_SETTINGS_PROVIDER_H