diff options
| author | 2019-07-28 01:35:59 +0200 | |
|---|---|---|
| committer | 2019-07-28 01:35:59 +0200 | |
| commit | 7f535260bbc2210bf8d605bac88546e9f18b2b05 (patch) | |
| tree | e519a681900aa5041d6bdb11004c14282f4c0b98 /operationcondition.cpp | |
| parent | f1a89a3ca758c8af549e62ad4258504cb2bc2c7c (diff) | |
| download | OneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.tar.gz OneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.zip | |
New API for isValidRangeSize
Diffstat (limited to 'operationcondition.cpp')
| -rw-r--r-- | operationcondition.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/operationcondition.cpp b/operationcondition.cpp index 507416d..97c7bce 100644 --- a/operationcondition.cpp +++ b/operationcondition.cpp @@ -106,15 +106,22 @@ QString OperationCondition::toString() } return QStringLiteral("[%1%2%3]").arg(str).arg(valueToScalar()).arg(m_boolean->toString()); } -bool OperationCondition::isValidRangeSize(std::pair<qint64, qint64>) const +Dice::CONDITION_STATE OperationCondition::isValidRangeSize(const std::pair<qint64, qint64>& range) const { - auto value= valueToScalar(); - bool valid= true; + Dice::CONDITION_STATE valid= Dice::CONDITION_STATE::REACHABLE; - if(value == 0) - valid= false; - /* else if(nullptr != m_boolean) - valid = m_boolean->isValidRangeSize(range);*/ + auto rangeIsClose= (range.first == range.second); + + Die die; + die.insertRollValue(range.first); + + if(nullptr == m_boolean) + return Dice::CONDITION_STATE::ERROR; + + if(rangeIsClose && m_boolean->hasValid(&die, false, false)) + valid= Dice::CONDITION_STATE::ALWAYSTRUE; + else if(rangeIsClose && !m_boolean->hasValid(&die, false, false)) + valid= Dice::CONDITION_STATE::UNREACHABLE; return valid; } |