aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser/node/variablenode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libparser/node/variablenode.cpp')
-rw-r--r--src/libparser/node/variablenode.cpp48
1 files changed, 20 insertions, 28 deletions
diff --git a/src/libparser/node/variablenode.cpp b/src/libparser/node/variablenode.cpp
index 709ab46..9de6759 100644
--- a/src/libparser/node/variablenode.cpp
+++ b/src/libparser/node/variablenode.cpp
@@ -8,35 +8,27 @@ VariableNode::VariableNode() {}
void VariableNode::run(ExecutionNode* previous)
{
m_previousNode= previous;
- if((nullptr != m_data) && (m_data->size() > m_index))
- {
- auto value= (*m_data)[m_index];
- value= ParsingToolBox::getLeafNode(value);
- if(nullptr == value)
- return;
-
- auto result= value->getResult();
- if(!result)
- return;
-
- m_result= result->getCopy();
- auto diceResult= dynamic_cast<DiceResult*>(result);
- if(nullptr != diceResult)
- {
- for(auto& die : diceResult->getResultList())
- {
- die->setDisplayed(false);
- }
- }
-
- if(nullptr != m_nextNode)
- {
- m_nextNode->run(this);
- }
- }
- else
+ if(isValid(!m_data || (m_data->size() <= m_index), Dice::ERROR_CODE::NO_VARIBALE,
+ tr("No variable at index:%1").arg(m_index + 1)))
+ return;
+
+ auto value= (*m_data)[m_index];
+ value= ParsingToolBox::getLeafNode(value);
+ if(nullptr == value)
+ return;
+
+ auto result= value->getResult();
+ if(!result)
+ return;
+
+ m_result= result->getCopy();
+ auto diceResult= dynamic_cast<DiceResult*>(result);
+ if(isValid(!diceResult, Dice::ERROR_CODE::NO_VALID_RESULT, tr("No Valid dice result"), false))
+ return;
+
+ for(auto& die : diceResult->getResultList())
{
- m_errors.insert(Dice::ERROR_CODE::NO_VARIBALE, QObject::tr("No variable at index:%1").arg(m_index + 1));
+ die->setDisplayed(false);
}
}