Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
deck_list_statistics_analyzer.h
Go to the documentation of this file.
1#ifndef COCKATRICE_DECK_LIST_STATISTICS_ANALYZER_H
2#define COCKATRICE_DECK_LIST_STATISTICS_ANALYZER_H
3
4#include <QHash>
5#include <QList>
6#include <QObject>
7#include <QString>
8#include <QStringList>
9#include <qtmetamacros.h>
10#include <unordered_map>
11
12class DeckListModel;
13
24
25class DeckListStatisticsAnalyzer : public QObject
26{
27 Q_OBJECT
28
29public:
30 explicit DeckListStatisticsAnalyzer(QObject *parent,
33
34 void analyze();
35
36 [[nodiscard]] const QHash<QString, int> &getManaBase() const
37 {
38 return manaBaseMap;
39 }
40 [[nodiscard]] const std::unordered_map<int, int> &getManaCurve() const
41 {
42 return manaCurveMap;
43 }
44 [[nodiscard]] const std::unordered_map<char, int> &getDevotion() const
45 {
46 return manaDevotionMap;
47 }
48
50 {
51 return devotionPipCount;
52 }
54 {
55 return devotionCardCount;
56 }
57
66
68 {
69 return typeCount;
70 }
72 {
73 return subtypeCount;
74 }
76 {
77 return colorCount;
78 }
80 {
81 return rarityCount;
82 }
84 {
85 return manaValueCount;
86 }
87
108
113
118
123
128
133
135 {
136 return model;
137 }
138
143
144signals:
146
147private:
150
152 std::unordered_map<int, int> manaCurveMap;
153 std::unordered_map<char, int> manaDevotionMap;
154
155 QHash<QString, int> devotionPipCount; // W/U/B/R/G total symbols
156 QHash<QString, int> devotionCardCount; // how many cards provide devotion
157
158 QHash<QString, int> productionPipCount; // mana produced by cards
160
166
172
178
179 // Not storing card info — only numeric results.
182
184 std::unordered_map<char, int> countManaSymbols(const QString &);
185 double hypergeometric(int N, int K, int n, int k);
186 void clearData();
187};
188
189#endif // COCKATRICE_DECK_LIST_STATISTICS_ANALYZER_H
Qt model representing a decklist for use in views (tree/table).
Definition deck_list_model.h:228
std::unordered_map< int, int > manaCurveMap
Definition deck_list_statistics_analyzer.h:152
DeckListModel * getModel() const
Definition deck_list_statistics_analyzer.h:134
const QHash< QString, QHash< int, int > > & getManaCurveByType() const
Definition deck_list_statistics_analyzer.h:88
QHash< QString, QHash< int, int > > manaCurveByPower
Definition deck_list_statistics_analyzer.h:170
const QHash< QString, QHash< int, int > > & getManaCurveBySubtype() const
Definition deck_list_statistics_analyzer.h:92
std::unordered_map< char, int > manaDevotionMap
Definition deck_list_statistics_analyzer.h:153
const QHash< QString, QHash< int, QStringList > > & getManaCurveCardsBySubtype() const
Definition deck_list_statistics_analyzer.h:114
QHash< QString, int > determineManaProduction(const QString &)
Definition deck_list_statistics_analyzer.cpp:128
const QHash< QString, int > & getSubtypeCount() const
Definition deck_list_statistics_analyzer.h:71
const QHash< QString, QHash< int, QStringList > > & getManaCurveCardsByPower() const
Definition deck_list_statistics_analyzer.h:124
QHash< int, int > manaValueCount
Definition deck_list_statistics_analyzer.h:165
double hypergeometric(int N, int K, int n, int k)
Definition deck_list_statistics_analyzer.cpp:195
QHash< QString, int > rarityCount
Definition deck_list_statistics_analyzer.h:164
std::unordered_map< char, int > countManaSymbols(const QString &)
Definition deck_list_statistics_analyzer.cpp:155
const QHash< QString, QHash< int, int > > & getManaCurveByPower() const
Definition deck_list_statistics_analyzer.h:100
QHash< QString, QHash< int, int > > manaCurveBySubtype
Definition deck_list_statistics_analyzer.h:168
const QHash< QString, int > & getDevotionPipCount() const
Definition deck_list_statistics_analyzer.h:49
DeckListStatisticsAnalyzerConfig & getConfig()
Definition deck_list_statistics_analyzer.h:139
QHash< QString, int > devotionCardCount
Definition deck_list_statistics_analyzer.h:156
DeckListStatisticsAnalyzer(QObject *parent, DeckListModel *model, DeckListStatisticsAnalyzerConfig _config=DeckListStatisticsAnalyzerConfig())
Definition deck_list_statistics_analyzer.cpp:18
const QHash< QString, int > & getTypeCount() const
Definition deck_list_statistics_analyzer.h:67
const QHash< QString, int > & getManaBase() const
Definition deck_list_statistics_analyzer.h:36
DeckListModel * model
Definition deck_list_statistics_analyzer.h:148
QHash< QString, QHash< int, QHash< int, double > > > probabilityExact
Definition deck_list_statistics_analyzer.h:180
const QHash< QString, QHash< int, QStringList > > & getManaCurveCardsByType() const
Definition deck_list_statistics_analyzer.h:109
QHash< QString, QHash< int, QStringList > > manaCurveCardsByColor
Definition deck_list_statistics_analyzer.h:175
const QHash< QString, int > & getProductionCardCount() const
Definition deck_list_statistics_analyzer.h:62
QHash< QString, QHash< int, QHash< int, double > > > probabilityAtLeast
Definition deck_list_statistics_analyzer.h:181
QHash< QString, QHash< int, int > > manaCurveByType
Definition deck_list_statistics_analyzer.h:167
QHash< QString, int > devotionPipCount
Definition deck_list_statistics_analyzer.h:155
const std::unordered_map< int, int > & getManaCurve() const
Definition deck_list_statistics_analyzer.h:40
QHash< QString, int > colorCount
Definition deck_list_statistics_analyzer.h:163
QHash< QString, QHash< int, QStringList > > manaCurveCardsByType
Definition deck_list_statistics_analyzer.h:173
const std::unordered_map< char, int > & getDevotion() const
Definition deck_list_statistics_analyzer.h:44
const QHash< QString, int > & getRarityCount() const
Definition deck_list_statistics_analyzer.h:79
QHash< QString, int > manaBaseMap
Definition deck_list_statistics_analyzer.h:151
QHash< QString, int > typeCount
Definition deck_list_statistics_analyzer.h:161
const QHash< QString, QHash< int, int > > & getManaCurveByToughness() const
Definition deck_list_statistics_analyzer.h:104
QHash< QString, QHash< int, QStringList > > manaCurveCardsBySubtype
Definition deck_list_statistics_analyzer.h:174
const QHash< QString, int > & getColorCount() const
Definition deck_list_statistics_analyzer.h:75
QHash< QString, QHash< int, QStringList > > manaCurveCardsByPower
Definition deck_list_statistics_analyzer.h:176
QHash< QString, QHash< int, QStringList > > manaCurveCardsByToughness
Definition deck_list_statistics_analyzer.h:177
const QHash< QString, QHash< int, int > > & getManaCurveByColor() const
Definition deck_list_statistics_analyzer.h:96
const QHash< int, int > & getManaValueCount() const
Definition deck_list_statistics_analyzer.h:83
QHash< QString, int > productionCardCount
Definition deck_list_statistics_analyzer.h:159
const QHash< QString, int > & getDevotionCardCount() const
Definition deck_list_statistics_analyzer.h:53
QHash< QString, QHash< int, int > > manaCurveByToughness
Definition deck_list_statistics_analyzer.h:171
const QHash< QString, QHash< int, QStringList > > & getManaCurveCardsByToughness() const
Definition deck_list_statistics_analyzer.h:129
DeckListStatisticsAnalyzerConfig config
Definition deck_list_statistics_analyzer.h:149
QHash< QString, int > productionPipCount
Definition deck_list_statistics_analyzer.h:158
QHash< QString, QHash< int, int > > manaCurveByColor
Definition deck_list_statistics_analyzer.h:169
void analyze()
Definition deck_list_statistics_analyzer.cpp:26
void clearData()
Definition deck_list_statistics_analyzer.cpp:219
QHash< QString, int > subtypeCount
Definition deck_list_statistics_analyzer.h:162
const QHash< QString, QHash< int, QStringList > > & getManaCurveCardsByColor() const
Definition deck_list_statistics_analyzer.h:119
const QHash< QString, int > & getProductionPipCount() const
Definition deck_list_statistics_analyzer.h:58
Definition mana_curve_category_widget.h:11
Definition deck_list_statistics_analyzer.h:15
bool includeSideboard
Definition deck_list_statistics_analyzer.h:22
bool computeCategories
Definition deck_list_statistics_analyzer.h:19
bool computeManaCurve
Definition deck_list_statistics_analyzer.h:17
bool computeProbabilities
Definition deck_list_statistics_analyzer.h:21
bool computeCurveBreakdowns
Definition deck_list_statistics_analyzer.h:20
bool computeManaBase
Definition deck_list_statistics_analyzer.h:16
bool computeDevotion
Definition deck_list_statistics_analyzer.h:18