11#include <QLoggingCategory>
15#include <QSharedPointer>
104 explicit CardInfo(
const QString &_name,
105 const QString &_text,
107 const QHash<QString, QString> &_properties,
108 const QList<CardRelation *> &_relatedCards,
109 const QList<CardRelation *> &_reverseRelatedCards,
134 explicit CardInfo(
const QString &_name,
135 const QString &_text,
137 const QByteArray &_propertiesBlob,
138 const QList<CardRelation *> &_relatedCards,
139 const QList<CardRelation *> &_reverseRelatedCards,
143 QSet<QString> _altNames);
169 static CardInfoPtr newInstance(
const QString &_name);
184 static CardInfoPtr newInstance(
const QString &_name,
185 const QString &_text,
187 const QHash<QString, QString> &_properties,
188 const QList<CardRelation *> &_relatedCards,
189 const QList<CardRelation *> &_reverseRelatedCards,
191 UiAttributes _uiAttributes);
213 static CardInfoPtr newInstance(
const QString &_name,
214 const QString &_text,
216 QByteArray _propertiesBlob,
217 const QList<CardRelation *> &_relatedCards,
218 const QList<CardRelation *> &_reverseRelatedCards,
220 UiAttributes _uiAttributes,
222 QSet<QString> _altNames,
223 bool _appendToSets =
true);
235 newCardInfo->setSmartPointer(newCardInfo);
252 [[nodiscard]]
inline const QString &
getName()
const
281 [[nodiscard]]
const QHash<QString, QString> &getPropertiesHash()
const;
283 [[nodiscard]] QString
getProperty(
const QString &propertyName)
const
287 void setProperty(
const QString &_name,
const QString &_value);
317 QList<CardRelation *> result;
322 void resetReverseRelatedCards2Me();
336 [[nodiscard]] QChar getColorChar()
const;
339 [[nodiscard]] QString getCardType()
const;
340 void setCardType(
const QString &value);
341 [[nodiscard]] QString getCmc()
const;
342 [[nodiscard]] QString getColors()
const;
343 void setColors(
const QString &value);
344 [[nodiscard]] QString getLoyalty()
const;
346 [[nodiscard]] QString getManaCost()
const;
347 [[nodiscard]] QString getPowTough()
const;
348 void setPowTough(
const QString &value);
358 [[nodiscard]] QString getCorrectedName()
const;
366 [[nodiscard]] QString getLegalityProp(
const QString &format)
const;
375 [[nodiscard]]
bool isLegalInFormat(
const QString &format)
const;
394 void combineLegalities(
const QHash<QString, QString> &props);
401 void refreshCachedSets();
411 static QString simplifyName(
const QString &name);
419 void refreshCachedSetNames();
426 void refreshCachedAltNames();
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:19
QMap< QString, QList< PrintingInfo > > SetToPrintingsMap
Definition card_info.h:29
QHash< QString, FormatRulesPtr > FormatRulesNameMap
Definition card_info.h:33
QSharedPointer< FormatRules > FormatRulesPtr
Definition card_info.h:28
QSharedPointer< CardSet > CardSetPtr
Definition card_info.h:27
QHash< QString, CardSetPtr > SetNameMap
Definition card_info.h:32
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.h:26
Q_LOGGING_CATEGORY(CardInfoLog, "card_info")
QHash< QString, CardInfoPtr > CardNameMap
Definition card_info.h:31
Represents a card and its associated metadata, properties, and relationships.
Definition card_info.h:51
bool hasProperty(const QString &propertyName) const
Definition card_info.h:288
QString simpleName
Simplified name for fuzzy matching.
Definition card_info.h:76
void setSmartPointer(CardInfoPtr _ptr)
Sets the internal smart pointer to self.
Definition card_info.h:246
const SetToPrintingsMap & getSets() const
Definition card_info.h:292
void setText(const QString &_text)
Definition card_info.h:268
CardInfo(const QString &_name, const QString &_text, bool _isToken, const QHash< QString, QString > &_properties, const QList< CardRelation * > &_relatedCards, const QList< CardRelation * > &_reverseRelatedCards, SetToPrintingsMap _sets, UiAttributes _uiAttributes)
Constructs a CardInfo with full initialization.
Definition card_info.cpp:36
UiAttributes uiAttributes
Attributes that affect display and game logic.
Definition card_info.h:86
const QList< CardRelation * > & getReverseRelatedCards() const
Definition card_info.h:307
const QString & getSimpleName() const
Definition card_info.h:256
const QList< CardRelation * > & getRelatedCards() const
Definition card_info.h:303
QList< CardRelation * > reverseRelatedCards
Cards that refer back to this card.
Definition card_info.h:83
const UiAttributes & getUiAttributes() const
Definition card_info.h:330
CardInfoPtr smartThis
Smart pointer to self for safe cross-references.
Definition card_info.h:74
const QList< CardRelation * > & getReverseRelatedCards2Me() const
Definition card_info.h:311
QSet< QString > altNames
Cached set of alternate names, used when searching.
Definition card_info.h:88
const QString & getSetsNames() const
Definition card_info.h:296
QString name
Full name of the card.
Definition card_info.h:75
QList< CardRelation * > relatedCards
Forward references to related cards.
Definition card_info.h:82
SetToPrintingsMap setsToPrintings
Mapping from set names to printing variations.
Definition card_info.h:85
const QSet< QString > & getAltNames()
Definition card_info.h:260
QString getProperty(const QString &propertyName) const
Definition card_info.h:283
CardInfo(const CardInfo &other)
Copy constructor for CardInfo.
Definition card_info.h:152
LazyPropertiesHash properties
Key-value store of dynamic card properties.
Definition card_info.h:80
QList< CardRelation * > reverseRelatedCardsToMe
Cards that consider this card as related.
Definition card_info.h:84
void addReverseRelatedCards2Me(CardRelation *cardRelation)
Definition card_info.h:323
CardInfoPtr clone() const
Clones the current CardInfo instance.
Definition card_info.h:232
void cardInfoChanged(CardInfoPtr card)
Emitted when card properties or state have changed.
const QString & getText() const
Definition card_info.h:264
QString setsNames
Cached, human-readable list of set names.
Definition card_info.h:87
bool getIsToken() const
Definition card_info.h:273
const QHash< QString, QString > & getPropertiesHash() const
Definition card_info.cpp:21
void pixmapUpdated(const PrintingInfo &printing)
Emitted when a pixmap for this card has been updated or finished loading.
QList< CardRelation * > getAllRelatedCards() const
Definition card_info.h:315
bool isToken
Whether this card is a token or not.
Definition card_info.h:78
QStringList getProperties() const
Definition card_info.h:277
QString text
Text description or rules text of the card.
Definition card_info.h:77
const QString & getName() const
Definition card_info.h:252
Represents a relationship between two cards.
Definition card_relation.h:24
A collection of cards grouped under a common identifier.
Definition card_set.h:35
Defines the base parser interface (ICardDatabaseParser) for all card database parsers.
Definition card_database_parser.h:21
A property map that can lazily deserialize blobs to avoid loading overhead.
Definition lazy_properties_hash.h:17
Represents metadata for a specific variation of a card within a set.
Definition printing_info.h:28
static QString getMainCardType(const QStringList &typeList)
Definition oracleimporter.cpp:95
Attributes of the card that affect display and game logic.
Definition card_info.h:62
int tableRow
Row index in a table or visual representation.
Definition card_info.h:65
bool landscapeOrientation
Orientation flag for rendering.
Definition card_info.h:64
bool cipt
Positioning flag used by UI.
Definition card_info.h:63
bool upsideDownArt
Whether artwork is flipped for visual purposes.
Definition card_info.h:66