mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-24 10:23:02 -07:00
64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
#include "stats_tally.h"
|
|
|
|
#include "../board/card_item.h"
|
|
|
|
#include <QCoreApplication>
|
|
#include <QList>
|
|
#include <algorithm>
|
|
|
|
static int sumPowers(const QList<CardItem *> &cards)
|
|
{
|
|
// calculate total power;
|
|
int total = 0;
|
|
for (auto card : cards) {
|
|
QVariantList parsed = CardItem::parsePT(card->getPT());
|
|
if (!parsed.isEmpty()) {
|
|
int power = parsed.first().toInt(); // toInt will default to 0 if it's not an int
|
|
total += qMax(power, 0);
|
|
}
|
|
}
|
|
return total;
|
|
}
|
|
|
|
QList<TallyRow> StatsTally::computeTotalPower(const QList<CardItem *> &cards)
|
|
{
|
|
// don't bother if none of the cards have pt
|
|
bool hasPT =
|
|
std::any_of(cards.cbegin(), cards.cend(), [](const CardItem *card) { return !card->getPT().isEmpty(); });
|
|
if (!hasPT) {
|
|
return {};
|
|
}
|
|
|
|
int total = sumPowers(cards);
|
|
|
|
QString name = QCoreApplication::translate("StatsTally", "Total Power");
|
|
return {TallyRow{name, QString::number(total)}};
|
|
}
|
|
|
|
static int sumToughness(const QList<CardItem *> &cards)
|
|
{
|
|
int total = 0;
|
|
for (auto card : cards) {
|
|
QVariantList parsed = CardItem::parsePT(card->getPT());
|
|
if (parsed.size() == 2) {
|
|
int toughness = parsed.at(1).toInt(); // toInt will default to 0 if it's not an int
|
|
total += qMax(toughness, 0);
|
|
}
|
|
}
|
|
return total;
|
|
}
|
|
|
|
QList<TallyRow> StatsTally::computeTotalToughness(const QList<CardItem *> &cards)
|
|
{
|
|
// don't bother if none of the cards have pt
|
|
bool hasPT =
|
|
std::any_of(cards.cbegin(), cards.cend(), [](const CardItem *card) { return !card->getPT().isEmpty(); });
|
|
if (!hasPT) {
|
|
return {};
|
|
}
|
|
|
|
int total = sumToughness(cards);
|
|
|
|
QString name = QCoreApplication::translate("StatsTally", "Total Toughness");
|
|
return {TallyRow{name, QString::number(total)}};
|
|
}
|