aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node/explodedicenode.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 /node/explodedicenode.cpp
parentf1a89a3ca758c8af549e62ad4258504cb2bc2c7c (diff)
downloadOneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.tar.gz
OneRoll-7f535260bbc2210bf8d605bac88546e9f18b2b05.zip
New API for isValidRangeSize
Diffstat (limited to 'node/explodedicenode.cpp')
-rw-r--r--node/explodedicenode.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/node/explodedicenode.cpp b/node/explodedicenode.cpp
index 704ac8a..2292a05 100644
--- a/node/explodedicenode.cpp
+++ b/node/explodedicenode.cpp
@@ -16,7 +16,6 @@ void ExplodeDiceNode::run(ExecutionNode* previous)
for(auto& die : previous_result->getResultList())
{
Die* tmpdie= new Die(*die);
-// *tmpdie= *die;
m_diceResult->insertResult(tmpdie);
die->displayed();
}
@@ -25,12 +24,23 @@ void ExplodeDiceNode::run(ExecutionNode* previous)
for(auto& die : list)
{
+ if(Dice::CONDITION_STATE::ALWAYSTRUE
+ == m_validator->isValidRangeSize(std::make_pair<qint64, qint64>(die->getBase(), die->getMaxValue())))
+ {
+ m_errors.insert(Dice::ERROR_CODE::ENDLESS_LOOP_ERROR,
+ QObject::tr("Condition (%1) cause an endless loop with this dice: %2")
+ .arg(toString(true))
+ .arg(QStringLiteral("d[%1,%2]")
+ .arg(static_cast<int>(die->getBase()))
+ .arg(static_cast<int>(die->getMaxValue()))));
+ continue;
+ }
+
while(m_validator->hasValid(die, false))
{
die->roll(true);
}
}
- // m_diceResult->setResultList(list);
if(nullptr != m_nextNode)
{