diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/libparser/booleancondition.cpp | 2 | ||||
| -rw-r--r-- | src/libparser/result/diceresult.cpp | 12 | ||||
| -rw-r--r-- | src/libparser/result/stringresult.cpp | 32 |
3 files changed, 29 insertions, 17 deletions
diff --git a/src/libparser/booleancondition.cpp b/src/libparser/booleancondition.cpp index 91be35c..ab5b15d 100644 --- a/src/libparser/booleancondition.cpp +++ b/src/libparser/booleancondition.cpp @@ -222,7 +222,7 @@ qint64 BooleanCondition::valueToScalar() const if(m_value == nullptr) return 0; - m_value->run(nullptr); + m_value->execute(nullptr); auto result= m_value->getResult(); if(result) return result->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); diff --git a/src/libparser/result/diceresult.cpp b/src/libparser/result/diceresult.cpp index 31e316b..b7e79f9 100644 --- a/src/libparser/result/diceresult.cpp +++ b/src/libparser/result/diceresult.cpp @@ -47,9 +47,12 @@ void DiceResult::setHomogeneous(bool b) void DiceResult::setResultList(QList<Die*> list) { - m_diceValues.erase( + for(auto& it : list) + m_diceValues.removeAll(it); + + /*m_diceValues.erase( std::remove_if(m_diceValues.begin(), m_diceValues.end(), [list](Die* die) { return list.contains(die); }), - m_diceValues.end()); + m_diceValues.end());*/ qDeleteAll(m_diceValues.begin(), m_diceValues.end()); m_diceValues.clear(); @@ -103,6 +106,9 @@ qreal DiceResult::getScalarResult() int i= 0; for(auto& tmp : m_diceValues) { + if(!tmp) + continue; + if(i > 0) { switch(m_operator) @@ -182,6 +188,8 @@ Result* DiceResult::getCopy() const QList<Die*> list; for(auto die : m_diceValues) { + if(!die) + continue; auto newdie= new Die(*die); newdie->setDisplayed(false); // die->displayed(); diff --git a/src/libparser/result/stringresult.cpp b/src/libparser/result/stringresult.cpp index 113c22c..f6bf957 100644 --- a/src/libparser/result/stringresult.cpp +++ b/src/libparser/result/stringresult.cpp @@ -77,15 +77,17 @@ bool StringResult::hasHighLight() const void StringResult::finished() { - if(isDigitOnly()) - { - std::for_each(m_value.begin(), m_value.end(), [this](const QString& str) { - auto die= new Die(); - die->setMaxValue(m_stringCount); - die->setValue(str.toInt()); - insertResult(die); - }); - } + if(!isDigitOnly()) + return; + + std::for_each(m_value.begin(), m_value.end(), + [this](const QString& str) + { + auto die= new Die(); + die->setMaxValue(m_stringCount); + die->setValue(str.toInt()); + insertResult(die); + }); } void StringResult::setStringCount(int count) @@ -95,11 +97,13 @@ void StringResult::setStringCount(int count) bool StringResult::isDigitOnly() const { - return std::all_of(m_value.begin(), m_value.end(), [](const QString& str) { - bool ok= false; - str.toInt(&ok); - return ok; - }); + return std::all_of(m_value.begin(), m_value.end(), + [](const QString& str) + { + bool ok= false; + str.toInt(&ok); + return ok; + }); } Result* StringResult::getCopy() const |