Cockatrice 2026-04-21-Development-2.11.0-beta.61
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
oracleimporter.h
Go to the documentation of this file.
1#ifndef ORACLEIMPORTER_H
2#define ORACLEIMPORTER_H
3
4#include <QMap>
5#include <QRegularExpression>
6#include <QVariant>
8#include <utility>
9
10// many users prefer not to see these sets with non english arts
11// they will given priority PriorityLowest
12const QStringList nonEnglishSets = {"4BB", "FBB", "PS11", "PSAL", "REN", "RIN"};
13const QMap<QString, CardSet::Priority> setTypePriorities{
15 {"expansion", CardSet::PriorityPrimary},
16
17 {"commander", CardSet::PrioritySecondary},
18 {"starter", CardSet::PrioritySecondary},
19 {"draft_innovation", CardSet::PrioritySecondary},
20 {"duel_deck", CardSet::PrioritySecondary},
21
22 {"archenemy", CardSet::PriorityReprint},
23 {"arsenal", CardSet::PriorityReprint},
25 {"eternal", CardSet::PriorityReprint},
26 {"from_the_vault", CardSet::PriorityReprint},
27 {"masterpiece", CardSet::PriorityReprint},
28 {"masters", CardSet::PriorityReprint},
29 {"memorabilia", CardSet::PriorityReprint},
30 {"planechase", CardSet::PriorityReprint},
31 {"premium_deck", CardSet::PriorityReprint},
32 {"promo", CardSet::PriorityReprint},
33 {"spellbook", CardSet::PriorityReprint},
34 {"token", CardSet::PriorityReprint},
35 {"treasure_chest", CardSet::PriorityReprint},
36
37 {"alchemy", CardSet::PriorityOther},
38 {"funny", CardSet::PriorityOther},
39 {"minigame", CardSet::PriorityOther},
40 {"vanguard", CardSet::PriorityOther},
41};
42
44{
45private:
47 QList<QVariant> cards;
49 QString setType;
51
52public:
53 const QString &getShortName() const
54 {
55 return shortName;
56 }
57 const QString &getLongName() const
58 {
59 return longName;
60 }
61 const QList<QVariant> &getCards() const
62 {
63 return cards;
64 }
65 const QString &getSetType() const
66 {
67 return setType;
68 }
69 const QDate &getReleaseDate() const
70 {
71 return releaseDate;
72 }
74 {
75 return priority;
76 }
77 SetToDownload(QString _shortName,
78 QString _longName,
79 QList<QVariant> _cards,
80 CardSet::Priority _priority,
81 QString _setType = QString(),
82 const QDate &_releaseDate = QDate())
83 : shortName(std::move(_shortName)), longName(std::move(_longName)), cards(std::move(_cards)),
84 releaseDate(_releaseDate), setType(std::move(_setType)), priority(_priority)
85 {
86 }
87 bool operator<(const SetToDownload &set) const
88 {
89 return longName.compare(set.longName, Qt::CaseInsensitive) < 0;
90 }
91};
92
94{
95public:
96 SplitCardPart(const QString &_name,
97 const QString &_text,
98 const QVariantHash &_properties,
99 const PrintingInfo &_printingInfo);
100 inline const QString &getName() const
101 {
102 return name;
103 }
104 inline const QString &getText() const
105 {
106 return text;
107 }
108 inline const QVariantHash &getProperties() const
109 {
110 return properties;
111 }
112 inline const PrintingInfo &getPrintingInfo() const
113 {
114 return printingInfo;
115 }
116
117private:
118 QString name;
119 QString text;
120 QVariantHash properties;
122};
123
124class OracleImporter : public QObject
125{
126 Q_OBJECT
127private:
128 static const QRegularExpression formatRegex;
129
134
139
140 QList<SetToDownload> allSets;
141
142 CardInfoPtr addCard(QString name,
143 const QString &text,
144 bool isToken,
145 QVariantHash properties,
146 const QList<CardRelation *> &relatedCards,
147 const PrintingInfo &printingInfo);
148signals:
149 void setIndexChanged(int cardsImported, int setIndex, const QString &setName);
150 void dataReadProgress(int bytesRead, int totalBytes);
151
152public:
153 explicit OracleImporter(QObject *parent = nullptr);
154 bool readSetsFromByteArray(const QByteArray &data);
155 int startImport();
156 bool saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion);
157 int importCardsFromSet(const CardSetPtr &currentSet, const QList<QVariant> &cardsList);
160 {
161 return cards;
162 }
163 QList<SetToDownload> &getSets()
164 {
165 return allSets;
166 }
167 void clear();
168};
169
170#endif
QSharedPointer< CardInfo > CardInfoPtr
Definition card_info.cpp:20
QHash< QString, FormatRulesPtr > FormatRulesNameMap
Definition card_info.h:31
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
Priority
Defines relative ordering and importance of sets.
Definition card_set.h:42
@ PriorityPrimary
Primary, canonical set.
Definition card_set.h:44
@ PriorityReprint
Duplicate or reprint category.
Definition card_set.h:46
@ PrioritySecondary
Secondary but relevant.
Definition card_set.h:45
@ PriorityOther
Miscellaneous grouping.
Definition card_set.h:47
static const QRegularExpression formatRegex
Definition oracleimporter.h:128
OracleImporter(QObject *parent=nullptr)
Definition oracleimporter.cpp:29
bool readSetsFromByteArray(const QByteArray &data)
Definition oracleimporter.cpp:45
const CardNameMap & getCardList() const
Definition oracleimporter.h:159
int startImport()
Definition oracleimporter.cpp:532
QList< SetToDownload > allSets
Definition oracleimporter.h:140
int importCardsFromSet(const CardSetPtr &currentSet, const QList< QVariant > &cardsList)
Definition oracleimporter.cpp:229
void setIndexChanged(int cardsImported, int setIndex, const QString &setName)
void dataReadProgress(int bytesRead, int totalBytes)
CardNameMap cards
Definition oracleimporter.h:133
QList< SetToDownload > & getSets()
Definition oracleimporter.h:163
FormatRulesNameMap createDefaultMagicFormats()
Definition oracleimporter.cpp:467
SetNameMap sets
Definition oracleimporter.h:138
void clear()
Definition oracleimporter.cpp:570
bool saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion)
Definition oracleimporter.cpp:563
CardInfoPtr addCard(QString name, const QString &text, bool isToken, QVariantHash properties, const QList< CardRelation * > &relatedCards, const PrintingInfo &printingInfo)
Definition oracleimporter.cpp:134
Represents metadata for a specific variation of a card within a set.
Definition printing_info.h:27
CardSet::Priority getPriority() const
Definition oracleimporter.h:73
const QDate & getReleaseDate() const
Definition oracleimporter.h:69
const QString & getLongName() const
Definition oracleimporter.h:57
bool operator<(const SetToDownload &set) const
Definition oracleimporter.h:87
QList< QVariant > cards
Definition oracleimporter.h:47
SetToDownload(QString _shortName, QString _longName, QList< QVariant > _cards, CardSet::Priority _priority, QString _setType=QString(), const QDate &_releaseDate=QDate())
Definition oracleimporter.h:77
QString shortName
Definition oracleimporter.h:46
const QList< QVariant > & getCards() const
Definition oracleimporter.h:61
QString longName
Definition oracleimporter.h:46
const QString & getShortName() const
Definition oracleimporter.h:53
const QString & getSetType() const
Definition oracleimporter.h:65
QDate releaseDate
Definition oracleimporter.h:48
QString setType
Definition oracleimporter.h:49
CardSet::Priority priority
Definition oracleimporter.h:50
QString text
Definition oracleimporter.h:119
QVariantHash properties
Definition oracleimporter.h:120
const QVariantHash & getProperties() const
Definition oracleimporter.h:108
const QString & getName() const
Definition oracleimporter.h:100
const PrintingInfo & getPrintingInfo() const
Definition oracleimporter.h:112
const QString & getText() const
Definition oracleimporter.h:104
SplitCardPart(const QString &_name, const QString &_text, const QVariantHash &_properties, const PrintingInfo &_printingInfo)
Definition oracleimporter.cpp:19
PrintingInfo printingInfo
Definition oracleimporter.h:121
QString name
Definition oracleimporter.h:118
const QMap< QString, CardSet::Priority > setTypePriorities
Definition oracleimporter.h:13
const QStringList nonEnglishSets
Definition oracleimporter.h:12