Cockatrice 2025-11-30-Development-2.11.0-beta.38
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
47
50
53
54private:
58 void checkUnknownSets();
59
64
66 QBasicMutex *clearDatabaseMutex = new QBasicMutex(), *addCardMutex = new QBasicMutex(),
67 *removeCardMutex = new QBasicMutex();
68
69public:
77 explicit CardDatabase(QObject *parent = nullptr,
78 ICardPreferenceProvider *prefs = nullptr,
79 ICardDatabasePathProvider *pathProvider = nullptr,
81
83 ~CardDatabase() override;
84
89 void removeCard(CardInfoPtr card);
90
92 void clear();
93
95 [[nodiscard]] const CardNameMap &getCardList() const
96 {
97 return cards;
98 }
99
105 CardSetPtr getSet(const QString &setName);
106
108 [[nodiscard]] CardSetList getSetList() const;
109
111 [[nodiscard]] LoadStatus getLoadStatus() const
112 {
113 return loadStatus;
114 }
115
117 [[nodiscard]] CardDatabaseQuerier *query() const
118 {
119 return querier;
120 }
121
124
126 void markAllSetsAsKnown();
127
130
131public slots:
136 void addCard(CardInfoPtr card);
137
142 void addSet(CardSetPtr set);
143
145 void loadCardDatabases();
146
151
152signals:
155
158
164 void cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames);
165
168
171
174
177
178 friend class CardDatabaseLoader;
180};
181
182#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:21
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
QSharedPointer< CardSet > CardSetPtr
Definition card_info.h:24
QHash< QString, CardSetPtr > SetNameMap
Definition card_info.h:28
QHash< QString, CardInfoPtr > CardNameMap
Definition card_info.h:27
LoadStatus getLoadStatus() const
Returns the current load status.
Definition card_database.h:111
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:95
bool saveCustomTokensToFile()
Saves custom tokens to file.
Definition card_database.cpp:63
QBasicMutex * addCardMutex
Definition card_database.h:66
void cardDatabaseNewSetsFound(int numUnknownSets, QStringList unknownSetsNames)
Emitted when new sets are found.
QBasicMutex * removeCardMutex
Definition card_database.h:67
void markAllSetsAsKnown()
Marks all sets as known.
Definition card_database.cpp:186
void cardDatabaseLoadingFinished()
Emitted when the card database has finished loading successfully.
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:178
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:52
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:49
friend class CardDatabaseQuerier
Definition card_database.h:179
~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:46
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.
QBasicMutex * clearDatabaseMutex
Mutexes for thread safety.
Definition card_database.h:66
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:117
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:5