From 58893c479bfdf2ea7631bff12710a436c3bcfa51 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sun, 28 Jul 2019 02:38:00 +0200 Subject: set of possibility --- operationcondition.cpp | 20 +++++++++++++++++++- operationcondition.h | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/operationcondition.cpp b/operationcondition.cpp index 97c7bce..9ef8e1e 100644 --- a/operationcondition.cpp +++ b/operationcondition.cpp @@ -68,7 +68,7 @@ qint64 OperationCondition::hasValid(Die* b, bool recursive, bool unhighlight) co if(valueScalar == 0) valueScalar= 1; die.insertRollValue(value % valueScalar); - sum+= m_boolean->hasValid(&die, recursive, false); + sum+= m_boolean->hasValid(&die, recursive, false) ? 1 : 0; } break; } @@ -125,6 +125,7 @@ Dice::CONDITION_STATE OperationCondition::isValidRangeSize(const std::pairgetResult(); return result->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); } + +const std::set& OperationCondition::getPossibleValues(const std::pair& range) +{ + if(nullptr == m_boolean) + return m_values; + + for(qint64 i= std::min(range.first, range.second); i <= std::max(range.first, range.second); ++i) + { + auto valueScalar= valueToScalar(); + auto val= i % valueScalar; + Die die; + die.insertRollValue(val); + if(m_boolean->hasValid(&die, false, false)) + m_values.insert(i); + } + return m_values; +} diff --git a/operationcondition.h b/operationcondition.h index b324f6b..423148d 100644 --- a/operationcondition.h +++ b/operationcondition.h @@ -49,6 +49,7 @@ public: void setBoolean(BooleanCondition* boolean); virtual Validator* getCopy() const; + const std::set& getPossibleValues(const std::pair& range) override; private: qint64 valueToScalar() const; -- cgit v1.2.3-70-g09d2