aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/range.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 /range.cpp
parentf1a89a3ca758c8af549e62ad4258504cb2bc2c7c (diff)
downloadOneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.tar.gz
OneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.zip
New API for isValidRangeSize
Diffstat (limited to 'range.cpp')
-rw-r--r--range.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/range.cpp b/range.cpp
index 471784c..8eeff4e 100644
--- a/range.cpp
+++ b/range.cpp
@@ -58,12 +58,20 @@ QString Range::toString()
{
return QStringLiteral("[%1-%2]").arg(m_start).arg(m_end);
}
-bool Range::isValidRangeSize(std::pair<qint64, qint64> range) const
+Dice::CONDITION_STATE Range::isValidRangeSize(const std::pair<qint64, qint64>& range) const
{
- auto newStart= qBound(range.first, m_start, range.second);
- auto newEnd= qBound(range.first, m_end, range.second);
+ auto minRange= std::min(m_start, m_end);
+ auto minPossibleValue= std::min(range.first, range.second);
- return (newStart == m_start && newEnd == m_end && m_end >= m_start);
+ auto maxRange= std::max(m_start, m_end);
+ auto maxPossibleValue= std::max(range.first, range.second);
+
+ if(minRange == minPossibleValue && maxRange == maxPossibleValue)
+ return Dice::CONDITION_STATE::ALWAYSTRUE;
+ else if(maxRange < minPossibleValue || minRange > maxPossibleValue)
+ return Dice::CONDITION_STATE::UNREACHABLE;
+ else
+ return Dice::CONDITION_STATE::UNREACHABLE;
}
void Range::setStart(qint64 start)
{