From cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea Mon Sep 17 00:00:00 2001 From: Renaud Guezennec Date: Wed, 23 Oct 2024 15:42:08 +0200 Subject: Add execute node. --- src/libparser/node/keepdiceexecnode.cpp | 67 +++++++++++++++------------------ 1 file changed, 31 insertions(+), 36 deletions(-) (limited to 'src/libparser/node/keepdiceexecnode.cpp') diff --git a/src/libparser/node/keepdiceexecnode.cpp b/src/libparser/node/keepdiceexecnode.cpp index b197822..b4547c3 100644 --- a/src/libparser/node/keepdiceexecnode.cpp +++ b/src/libparser/node/keepdiceexecnode.cpp @@ -31,11 +31,10 @@ KeepDiceExecNode::~KeepDiceExecNode() {} void KeepDiceExecNode::run(ExecutionNode* previous) { m_previousNode= previous; - if(nullptr == previous || nullptr == m_numberOfDiceNode) - { + if(isValid(!previous || !m_numberOfDiceNode, Dice::ERROR_CODE::NO_VALID_RESULT, tr("No Valid result"))) return; - } - m_numberOfDiceNode->run(previous); + + m_numberOfDiceNode->execute(previous); auto lastnode= ParsingToolBox::getLeafNode(m_numberOfDiceNode); if(nullptr == lastnode) return; @@ -49,45 +48,41 @@ void KeepDiceExecNode::run(ExecutionNode* previous) DiceResult* previousDiceResult= dynamic_cast(previous->getResult()); m_result->setPrevious(previousDiceResult); - if(nullptr != previousDiceResult) - { - QList diceList= previousDiceResult->getResultList(); - if(numberOfDice < 0) - { - numberOfDice= diceList.size() + numberOfDice; - } + if(isValid(!previousDiceResult, Dice::ERROR_CODE::NO_VALID_RESULT, tr("No Valid result"))) + return; + + QList diceList= previousDiceResult->getResultList(); - QList diceList3= diceList.mid(0, static_cast(numberOfDice)); - QList diceList2; + if(numberOfDice < 0) + { + numberOfDice= diceList.size() + numberOfDice; + } - for(Die* die : qAsConst(diceList3)) - { - Die* tmpdie= new Die(*die); - diceList2.append(tmpdie); - die->displayed(); - die->setSelected(false); - } + QList diceList3= diceList.mid(0, static_cast(numberOfDice)); + QList diceList2; - if(numberOfDice > static_cast(diceList.size())) - { - m_errors.insert(Dice::ERROR_CODE::TOO_MANY_DICE, - QObject::tr(" You ask to keep %1 dice but the result only has %2") - .arg(numberOfDice) - .arg(diceList.size())); - } + for(Die* die : std::as_const(diceList3)) + { + Die* tmpdie= new Die(*die); + diceList2.append(tmpdie); + die->displayed(); + die->setSelected(false); + } - for(auto& tmp : diceList.mid(static_cast(numberOfDice), -1)) - { - tmp->setHighlighted(false); - } + if(numberOfDice > static_cast(diceList.size())) + { + m_errors.insert( + Dice::ERROR_CODE::TOO_MANY_DICE, + QObject::tr(" You ask to keep %1 dice but the result only has %2").arg(numberOfDice).arg(diceList.size())); + } - m_diceResult->setResultList(diceList2); - if(nullptr != m_nextNode) - { - m_nextNode->run(this); - } + for(auto& tmp : diceList.mid(static_cast(numberOfDice), -1)) + { + tmp->setHighlighted(false); } + + m_diceResult->setResultList(diceList2); } void KeepDiceExecNode::setDiceKeepNumber(ExecutionNode* n) -- cgit v1.2.3-70-g09d2