diff options
| author | 2019-07-28 02:38:00 +0200 | |
|---|---|---|
| committer | 2019-07-28 02:38:00 +0200 | |
| commit | 58893c479bfdf2ea7631bff12710a436c3bcfa51 (patch) | |
| tree | 0a4c5319c251acf3142664a5b3140dc191d6f2c5 /operationcondition.cpp | |
| parent | a31826330e85c4c3694e85319da863b6d1784257 (diff) | |
| download | OneRoll-58893c479bfdf2ea7631bff12710a436c3bcfa51.tar.gz OneRoll-58893c479bfdf2ea7631bff12710a436c3bcfa51.zip | |
set of possibility
Diffstat (limited to 'operationcondition.cpp')
| -rw-r--r-- | operationcondition.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
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::pair<qint6 return valid; } + Validator* OperationCondition::getCopy() const { OperationCondition* val= new OperationCondition(); @@ -144,3 +145,20 @@ qint64 OperationCondition::valueToScalar() const auto result= m_value->getResult(); return result->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); } + +const std::set<qint64>& OperationCondition::getPossibleValues(const std::pair<qint64, qint64>& 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; +} |