Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform 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 {"from_the_vault", CardSet::PriorityReprint},
26 {"masterpiece", CardSet::PriorityReprint},
27 {"masters", CardSet::PriorityReprint},
28 {"memorabilia", CardSet::PriorityReprint},
29 {"planechase", CardSet::PriorityReprint},
30 {"premium_deck", CardSet::PriorityReprint},
31 {"promo", CardSet::PriorityReprint},
32 {"spellbook", CardSet::PriorityReprint},
33 {"token", CardSet::PriorityReprint},
34 {"treasure_chest", CardSet::PriorityReprint},
35
36 {"alchemy", CardSet::PriorityOther},
37 {"funny", CardSet::PriorityOther},
38 {"minigame", CardSet::PriorityOther},
39 {"vanguard", CardSet::PriorityOther},
40};
41
43{
44private:
46 QList<QVariant> cards;
48 QString setType;
50
51public:
52 const QString &getShortName() const
53 {
54 return shortName;
55 }
56 const QString &getLongName() const
57 {
58 return longName;
59 }
60 const QList<QVariant> &getCards() const
61 {
62 return cards;
63 }
64 const QString &getSetType() const
65 {
66 return setType;
67 }
68 const QDate &getReleaseDate() const
69 {
70 return releaseDate;
71 }
73 {
74 return priority;
75 }
76 SetToDownload(QString _shortName,
77 QString _longName,
78 QList<QVariant> _cards,
79 CardSet::Priority _priority,
80 QString _setType = QString(),
81 const QDate &_releaseDate = QDate())
82 : shortName(std::move(_shortName)), longName(std::move(_longName)), cards(std::move(_cards)),
83 releaseDate(_releaseDate), setType(std::move(_setType)), priority(_priority)
84 {
85 }
86 bool operator<(const SetToDownload &set) const
87 {
88 return longName.compare(set.longName, Qt::CaseInsensitive) < 0;
89 }
90};
91
93{
94public:
95 SplitCardPart(const QString &_name,
96 const QString &_text,
97 const QVariantHash &_properties,
98 const PrintingInfo &_printingInfo);
99 inline const QString &getName() const
100 {
101 return name;
102 }
103 inline const QString &getText() const
104 {
105 return text;
106 }
107 inline const QVariantHash &getProperties() const
108 {
109 return properties;
110 }
111 inline const PrintingInfo &getPrintingInfo() const
112 {
113 return printingInfo;
114 }
115
116private:
117 QString name;
118 QString text;
119 QVariantHash properties;
121};
122
123class OracleImporter : public QObject
124{
125 Q_OBJECT
126private:
127 static const QRegularExpression formatRegex;
128
133
138
139 QList<SetToDownload> allSets;
140
141 CardInfoPtr addCard(QString name,
142 const QString &text,
143 bool isToken,
144 QVariantHash properties,
145 const QList<CardRelation *> &relatedCards,
146 const PrintingInfo &printingInfo);
147signals:
148 void setIndexChanged(int cardsImported, int setIndex, const QString &setName);
149 void dataReadProgress(int bytesRead, int totalBytes);
150
151public:
152 explicit OracleImporter(QObject *parent = nullptr);
153 bool readSetsFromByteArray(const QByteArray &data);
154 int startImport();
155 bool saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion);
156 int importCardsFromSet(const CardSetPtr &currentSet, const QList<QVariant> &cardsList);
158 {
159 return cards;
160 }
161 QList<SetToDownload> &getSets()
162 {
163 return allSets;
164 }
165 void clear();
166};
167
168#endif
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
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:127
OracleImporter(QObject *parent=nullptr)
Definition oracleimporter.cpp:26
bool readSetsFromByteArray(const QByteArray &data)
Definition oracleimporter.cpp:42
const CardNameMap & getCardList() const
Definition oracleimporter.h:157
int startImport()
Definition oracleimporter.cpp:466
QList< SetToDownload > allSets
Definition oracleimporter.h:139
int importCardsFromSet(const CardSetPtr &currentSet, const QList< QVariant > &cardsList)
Definition oracleimporter.cpp:226
void setIndexChanged(int cardsImported, int setIndex, const QString &setName)
void dataReadProgress(int bytesRead, int totalBytes)
CardNameMap cards
Definition oracleimporter.h:132
QList< SetToDownload > & getSets()
Definition oracleimporter.h:161
SetNameMap sets
Definition oracleimporter.h:137
void clear()
Definition oracleimporter.cpp:503
bool saveToFile(const QString &fileName, const QString &sourceUrl, const QString &sourceVersion)
Definition oracleimporter.cpp:497
CardInfoPtr addCard(QString name, const QString &text, bool isToken, QVariantHash properties, const QList< CardRelation * > &relatedCards, const PrintingInfo &printingInfo)
Definition oracleimporter.cpp:131
Represents metadata for a specific variation of a card within a set.
Definition printing_info.h:27
CardSet::Priority getPriority() const
Definition oracleimporter.h:72
const QDate & getReleaseDate() const
Definition oracleimporter.h:68
const QString & getLongName() const
Definition oracleimporter.h:56
bool operator<(const SetToDownload &set) const
Definition oracleimporter.h:86
QList< QVariant > cards
Definition oracleimporter.h:46
SetToDownload(QString _shortName, QString _longName, QList< QVariant > _cards, CardSet::Priority _priority, QString _setType=QString(), const QDate &_releaseDate=QDate())
Definition oracleimporter.h:76
QString shortName
Definition oracleimporter.h:45
const QList< QVariant > & getCards() const
Definition oracleimporter.h:60
QString longName
Definition oracleimporter.h:45
const QString & getShortName() const
Definition oracleimporter.h:52
const QString & getSetType() const
Definition oracleimporter.h:64
QDate releaseDate
Definition oracleimporter.h:47
QString setType
Definition oracleimporter.h:48
CardSet::Priority priority
Definition oracleimporter.h:49
QString text
Definition oracleimporter.h:118
QVariantHash properties
Definition oracleimporter.h:119
const QVariantHash & getProperties() const
Definition oracleimporter.h:107
const QString & getName() const
Definition oracleimporter.h:99
const PrintingInfo & getPrintingInfo() const
Definition oracleimporter.h:111
const QString & getText() const
Definition oracleimporter.h:103
SplitCardPart(const QString &_name, const QString &_text, const QVariantHash &_properties, const PrintingInfo &_printingInfo)
Definition oracleimporter.cpp:16
PrintingInfo printingInfo
Definition oracleimporter.h:120
QString name
Definition oracleimporter.h:117
const QMap< QString, CardSet::Priority > setTypePriorities
Definition oracleimporter.h:13
const QStringList nonEnglishSets
Definition oracleimporter.h:12