Update Essence statistics, filters and distribution panels for all fifteen symbols

This commit is contained in:
Christian Daniel Jensen 2026-11-02 05:53:35 -07:00
parent faa459ac24
commit bd197ecf56

View file

@ -14,18 +14,25 @@
#include <QList>
#include <QSharedPointer>
#include <QStringList>
#include <libcockatrice/card/essence_types.h>
#include <QVBoxLayout>
#include <QWidget>
namespace
{
AnalyticsPanelWidgetRegistrar registerManaDistribution{
"manaProdDevotion", ManaDistributionWidget::tr("Mana Production + Devotion"),
"manaProdDevotion", ManaDistributionWidget::tr("Essence Production + Costs"),
[](QWidget *parent, DeckListStatisticsAnalyzer *analyzer) { return new ManaDistributionWidget(parent, analyzer); }};
} // anonymous namespace
static const QStringList kColors = {"W", "U", "B", "R", "G", "C"};
static const QStringList kEssences = [] {
QStringList codes;
for (const QChar symbol : Essence::symbols()) {
codes.append(QString(symbol));
}
return codes;
}();
ManaDistributionWidget::ManaDistributionWidget(QWidget *parent, DeckListStatisticsAnalyzer *analyzer)
: AbstractAnalyticsPanelWidget(parent, analyzer)
@ -49,7 +56,7 @@ ManaDistributionWidget::ManaDistributionWidget(QWidget *parent, DeckListStatisti
row = new QHBoxLayout();
containerLayout->addLayout(row);
for (const QString &c : kColors) {
for (const QString &c : kEssences) {
auto *w = new ManaDistributionSingleDisplayWidget(c, this);
row->addWidget(w);
rows[c] = w;
@ -65,7 +72,7 @@ void ManaDistributionWidget::updateDisplay()
const auto &prodPips = analyzer->getProductionPipCount();
const auto &prodCards = analyzer->getProductionCardCount();
QStringList filtered = config.filters.isEmpty() ? kColors : config.filters;
QStringList filtered = config.filters.isEmpty() ? kEssences : config.filters;
QMap<QString, int> devMap, prodMap;
for (const QString &c : filtered) {
@ -89,7 +96,7 @@ void ManaDistributionWidget::updateDisplay()
productionBarTop->setColors(prodMap);
}
for (const QString &c : kColors) {
for (const QString &c : kEssences) {
auto *w = rows.value(c);
if (!w) {
@ -126,7 +133,7 @@ void ManaDistributionWidget::updateDisplay()
QDialog *ManaDistributionWidget::createConfigDialog(QWidget *parent)
{
auto *dlg = new ManaDistributionConfigDialog(analyzer, parent);
dlg->setWindowTitle(tr("Mana Distribution Settings"));
dlg->setWindowTitle(tr("Essence Distribution Settings"));
dlg->setFromConfig(config);
connect(dlg, &QDialog::accepted, [this, dlg]() {