aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/operationcondition.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2019-07-28 01:35:59 +0200
committerRenaud G <renaud@rolisteam.org>2019-07-28 01:35:59 +0200
commit7f535260bbc2210bf8d605bac88546e9f18b2b05 (patch)
treee519a681900aa5041d6bdb11004c14282f4c0b98 /operationcondition.cpp
parentf1a89a3ca758c8af549e62ad4258504cb2bc2c7c (diff)
downloadOneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.tar.gz
OneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.zip
New API for isValidRangeSize
Diffstat (limited to 'operationcondition.cpp')
-rw-r--r--operationcondition.cpp21
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;
}