diff options
Diffstat (limited to 'src/libparser/node/variablenode.cpp')
| -rw-r--r-- | src/libparser/node/variablenode.cpp | 48 |
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); } } |