Cockatrice 2026-01-14-Development-2.11.0-beta.46
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
card_database.h
Go to the documentation of this file.
1#ifndef CARDDATABASE_H
2#define CARDDATABASE_H
3
7
8#include <QBasicMutex>
9#include <QDate>
10#include <QHash>
11#include <QList>
12#include <QLoggingCategory>
13#include <QVector>
15#include <utility>
16
17inline Q_LOGGING_CATEGORY(CardDatabaseLog, "card_database");
18
28class CardDatabase : public QObject
29{
30 Q_OBJECT
31
32protected:
35
38
41
44
46
49
52
55
56private:
60 void checkUnknownSets();
61
66
68 QBasicMutex *clearDatabaseMutex = new QBasicMutex(), *addCardMutex = new QBasicMutex(),
69 *removeCardMutex = new QBasicMutex();
70
71public:
79 explicit CardDatabase(QObject *parent = nullptr,
80 ICardPreferenceProvider *prefs = nullptr,
81 ICardDatabasePathProvider *pathProvider = nullptr,
83
85 ~CardDatabase() override;
86
91 void removeCard(CardInfoPtr card);
92
94 void clear();
95
97 [[nodiscard]] const CardNameMap &getCardList() const
98 {
99 return cards;
100 }
101
107 CardSetPtr getSet(const QString &setName);
108
110 [[nodiscard]] CardSetList getSetList() const;
111
113 [[nodiscard]] LoadStatus getLoadStatus() const
114 {
115 return loadStatus;
116 }
117
119 [[nodiscard]] CardDatabaseQuerier *query() const
120 {
121 return querier;
122 }
123
126
128 void markAllSetsAsKnown();
129
132
133public slots:
138 void addCard(CardInfoPtr card);
139
144 void addSet(CardSetPtr set);
145
146 void addFormat(FormatRulesPtr format);
147
149 void loadCardDatabases();
150
155
156signals:
159
162
168 void cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames);
169
172
175
178
181
182 friend class CardDatabaseLoader;
184};
185
186#endif // CARDDATABASE_H
Q_LOGGING_CATEGORY(CardDatabaseLog, "card_database")
LoadStatus
Represents the result of attempting to load a card database.
Definition card_database_loader.h:22
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
QHash< QString, FormatRulesPtr > FormatRulesNameMap
Definition card_info.h:31
QSharedPointer< FormatRules > FormatRulesPtr
Definition card_info.h:26
QSharedPointer< CardSet > CardSetPtr
Definition card_info.h:25
QHash< QString, CardSetPtr > SetNameMap
Definition card_info.h:30
QHash< QString, CardInfoPtr > CardNameMap
Definition card_info.h:29
LoadStatus getLoadStatus() const
Returns the current load status.
Definition card_database.h:113
SetNameMap sets
Sets indexed by short name.
Definition card_database.h:43
void cardDatabaseAllNewSetsEnabled()
Emitted when all new sets have been enabled.
const CardNameMap & getCardList() const
Returns the map of cards by name.
Definition card_database.h:97
bool saveCustomTokensToFile()
Saves custom tokens to file.
Definition card_database.cpp:63
QBasicMutex * addCardMutex
Definition card_database.h:68
void cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames)
Emitted when new sets are found.
QBasicMutex * removeCardMutex
Definition card_database.h:69
void markAllSetsAsKnown()
Marks all sets as known.
Definition card_database.cpp:186
void cardDatabaseLoadingFinished()
Emitted when the card database has finished loading successfully.
void addFormat(FormatRulesPtr format)
Definition card_database.cpp:203
void refreshCachedReverseRelatedCards()
Refreshes the cached reverse-related cards for all cards.
Definition card_database.cpp:68
void enableAllUnknownSets()
Enables all unknown sets in the database.
Definition card_database.cpp:180
void cardDatabaseLoadingFailed()
Emitted when the card database fails to load.
void cardDatabaseEnabledSetsChanged()
Emitted when enabled sets have changed.
void loadCardDatabases()
Loads card databases from configured paths.
Definition card_database.cpp:58
friend class CardDatabaseLoader
Definition card_database.h:182
void notifyEnabledSetsChanged()
Notifies listeners that enabled sets changed.
Definition card_database.cpp:192
void checkUnknownSets()
Check for sets that are unknown and emit signals if needed.
Definition card_database.cpp:156
CardSetList getSetList() const
Returns a list of all sets in the database.
Definition card_database.cpp:147
CardNameMap cards
Cards indexed by exact name.
Definition card_database.h:37
ICardSetPriorityController * setPriorityController
Controller to determine set priority when choosing preferred printings.
Definition card_database.h:34
void cardRemoved(CardInfoPtr card)
Emitted when a card is removed.
void clear()
Clears all cards, sets, and internal state.
Definition card_database.cpp:39
CardNameMap simpleNameCards
Cards indexed by simplified name (normalized)
Definition card_database.h:40
CardDatabaseQuerier * querier
Querier for higher-level card lookups.
Definition card_database.h:54
CardSetPtr getSet(const QString &setName)
Retrieves a set by short name, creating a new one if missing.
Definition card_database.cpp:136
void addSet(CardSetPtr set)
Adds a set to the database.
Definition card_database.cpp:131
LoadStatus loadStatus
Current load status of the database.
Definition card_database.h:51
friend class CardDatabaseQuerier
Definition card_database.h:183
~CardDatabase() override
Destructor clears all internal data.
Definition card_database.cpp:34
void removeCard(CardInfoPtr card)
Removes a card from the database.
Definition card_database.cpp:109
CardDatabaseLoader * loader
Loader responsible for file discovery and parsing.
Definition card_database.h:48
CardDatabase(QObject *parent=nullptr, ICardPreferenceProvider *prefs=nullptr, ICardDatabasePathProvider *pathProvider=nullptr, ICardSetPriorityController *setPriorityController=nullptr)
Constructs a new CardDatabase instance.
Definition card_database.cpp:14
void cardAdded(CardInfoPtr card)
Emitted when a new card is added.
FormatRulesNameMap formats
Definition card_database.h:45
QBasicMutex * clearDatabaseMutex
Mutexes for thread safety.
Definition card_database.h:68
void addCard(CardInfoPtr card)
Adds a card to the database.
Definition card_database.cpp:85
CardDatabaseQuerier * query() const
Returns the querier for performing card lookups.
Definition card_database.h:119
A list-like container for CardSet objects with extended management methods.
Definition card_set_list.h:20
Definition interface_card_database_path_provider.h:6
Definition interface_card_preference_provider.h:7
Definition interface_card_set_priority_controller.h:7