diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp index ea61302f0..147675e21 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.cpp @@ -29,10 +29,14 @@ DeckAnalyticsWidget::DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnal removeButton = new QPushButton(this); saveButton = new QPushButton(this); loadButton = new QPushButton(this); + includeSideboardCheckBox = new QCheckBox(this); + includeSideboardCheckBox->setChecked(false); + controlLayout->addWidget(addButton); controlLayout->addWidget(removeButton); controlLayout->addWidget(saveButton); controlLayout->addWidget(loadButton); + controlLayout->addWidget(includeSideboardCheckBox); layout->addWidget(controlContainer); @@ -40,6 +44,7 @@ DeckAnalyticsWidget::DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnal connect(removeButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::onRemoveSelected); connect(saveButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::saveLayout); connect(loadButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::loadLayout); + connect(includeSideboardCheckBox, &QCheckBox::clicked, this, &DeckAnalyticsWidget::includeSideboardChanged); // Scroll area and container scrollArea = new QScrollArea(this); @@ -66,6 +71,13 @@ void DeckAnalyticsWidget::retranslateUi() removeButton->setText(tr("Remove Panel")); saveButton->setText(tr("Save Layout")); loadButton->setText(tr("Load Layout")); + includeSideboardCheckBox->setText(tr("Include Sideboard")); +} + +void DeckAnalyticsWidget::includeSideboardChanged(bool checked) +{ + statsAnalyzer->getConfig().includeSideboard = checked; + updateDisplays(); } void DeckAnalyticsWidget::updateDisplays() diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h index 31ee36fbb..09618c3f8 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_analytics_widget.h @@ -11,6 +11,7 @@ #include "deck_list_statistics_analyzer.h" #include "resizable_panel.h" +#include #include #include #include @@ -29,6 +30,7 @@ public slots: public: explicit DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnalyzer *analyzer); void retranslateUi(); + void includeSideboardChanged(bool checked); private slots: void onAddPanel(); @@ -57,6 +59,8 @@ private: QPushButton *saveButton; QPushButton *loadButton; + QCheckBox *includeSideboardCheckBox; + QScrollArea *scrollArea; QWidget *panelContainer; QVBoxLayout *panelLayout; diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp index ad8afb766..073b6d25c 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.cpp @@ -19,7 +19,13 @@ void DeckListStatisticsAnalyzer::analyze() { clearData(); - QList nodes = model->getCardNodes(); + QList nodes; + + if (config.includeSideboard) { + nodes = model->getCardNodes(); + } else { + nodes = model->getCardNodesForZone(DECK_ZONE_MAIN); + } for (auto node : nodes) { CardInfoPtr info = CardDatabaseManager::query()->getCardInfo(node->getName()); diff --git a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h index 946bb0117..52ae751bf 100644 --- a/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h +++ b/cockatrice/src/interface/widgets/deck_analytics/deck_list_statistics_analyzer.h @@ -17,6 +17,7 @@ struct DeckListStatisticsAnalyzerConfig bool computeCategories = true; bool computeCurveBreakdowns = true; bool computeProbabilities = true; + bool includeSideboard = false; }; class DeckListStatisticsAnalyzer : public QObject @@ -133,6 +134,11 @@ public: return model; } + DeckListStatisticsAnalyzerConfig &getConfig() + { + return config; + } + signals: void statsUpdated();