diff --git a/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.cpp b/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.cpp index b9f8936df..899ac7515 100644 --- a/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.cpp +++ b/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.cpp @@ -7,10 +7,9 @@ #include "../general/display/banner_widget.h" #include "../general/display/bar_widget.h" +#include #include #include -#include -#include ManaBaseWidget::ManaBaseWidget(QWidget *parent, DeckListModel *_deckListModel) : QWidget(parent), deckListModel(_deckListModel) @@ -53,24 +52,28 @@ void ManaBaseWidget::updateDisplay() int totalSum = 0; for (auto entry : manaBaseMap) { - totalSum += entry.second; + totalSum += entry; } // Define color mapping for mana types - std::unordered_map manaColors = {{"W", QColor(248, 231, 185)}, {"U", QColor(14, 104, 171)}, - {"B", QColor(21, 11, 0)}, {"R", QColor(211, 32, 42)}, - {"G", QColor(0, 115, 62)}, {"C", QColor(150, 150, 150)}}; + QHash manaColors; + manaColors.insert("W", QColor(248, 231, 185)); + manaColors.insert("U", QColor(14, 104, 171)); + manaColors.insert("B", QColor(21, 11, 0)); + manaColors.insert("R", QColor(211, 32, 42)); + manaColors.insert("G", QColor(0, 115, 62)); + manaColors.insert("C", QColor(150, 150, 150)); - for (auto entry : manaBaseMap) { - QColor barColor = manaColors.count(entry.first) ? manaColors[entry.first] : Qt::gray; - BarWidget *barWidget = new BarWidget(QString(entry.first), entry.second, totalSum, barColor, this); + for (auto manaColor : manaBaseMap.keys()) { + QColor barColor = manaColors.contains(manaColor) ? manaColors[manaColor] : Qt::gray; + BarWidget *barWidget = new BarWidget(QString(manaColor), manaBaseMap[manaColor], totalSum, barColor, this); barLayout->addWidget(barWidget); } update(); } -std::unordered_map ManaBaseWidget::analyzeManaBase() +QHash ManaBaseWidget::analyzeManaBase() { manaBaseMap.clear(); InnerDecklistNode *listRoot = deckListModel->getDeckList()->getRoot(); @@ -95,10 +98,16 @@ std::unordered_map ManaBaseWidget::analyzeManaBase() return manaBaseMap; } -std::unordered_map ManaBaseWidget::determineManaProduction(const QString &rulesText) +QHash ManaBaseWidget::determineManaProduction(const QString &rulesText) { // Initialize mana counts - std::unordered_map manaCounts = {{"W", 0}, {"U", 0}, {"B", 0}, {"R", 0}, {"G", 0}, {"C", 0}}; + QHash manaCounts; + manaCounts.insert("W", 0); + manaCounts.insert("U", 0); + manaCounts.insert("B", 0); + manaCounts.insert("R", 0); + manaCounts.insert("G", 0); + manaCounts.insert("C", 0); // Define regex patterns for different mana production rules QRegularExpression tapAddColorless(R"(\{T\}:\s*Add\s*\{C\}|Add\s*one\s*colorless\s*mana)"); @@ -131,10 +140,9 @@ std::unordered_map ManaBaseWidget::determineManaProduction(const Q return manaCounts; } -void ManaBaseWidget::mergeManaCounts(std::unordered_map &manaCounts1, - const std::unordered_map &manaCounts2) +void ManaBaseWidget::mergeManaCounts(QHash &manaCounts1, const QHash &manaCounts2) { - for (const auto &pair : manaCounts2) { - manaCounts1[pair.first] += pair.second; // Add values for matching keys + for (auto it = manaCounts2.constBegin(); it != manaCounts2.constEnd(); ++it) { + manaCounts1[it.key()] += it.value(); } } diff --git a/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.h b/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.h index c07f23d32..2fc53dc2e 100644 --- a/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.h +++ b/cockatrice/src/client/ui/widgets/deck_analytics/mana_base_widget.h @@ -15,12 +15,11 @@ class ManaBaseWidget : public QWidget public: explicit ManaBaseWidget(QWidget *parent, DeckListModel *deckListModel); - std::unordered_map analyzeManaBase(); + QHash analyzeManaBase(); void updateDisplay(); - std::unordered_map determineManaProduction(const QString &manaString); - void mergeManaCounts(std::unordered_map &manaCounts1, - const std::unordered_map &manaCounts2); + QHash determineManaProduction(const QString &manaString); + void mergeManaCounts(QHash &manaCounts1, const QHash &manaCounts2); public slots: void setDeckModel(DeckListModel *deckModel); @@ -29,7 +28,7 @@ public slots: private: DeckListModel *deckListModel; BannerWidget *bannerWidget; - std::unordered_map manaBaseMap; + QHash manaBaseMap; QVBoxLayout *layout; QHBoxLayout *barLayout; };