diff options
| author | 2024-10-23 15:42:08 +0200 | |
|---|---|---|
| committer | 2024-12-29 14:46:30 +0100 | |
| commit | cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea (patch) | |
| tree | c261de4ad8d0f85aec0200bf500e9579437577df /src/libparser/node/paintnode.cpp | |
| parent | e4dc41cdc3ebb84ef7e42f5cf261e36fe874c901 (diff) | |
| download | OneRoll-cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea.tar.gz OneRoll-cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea.zip | |
Add execute node.
Diffstat (limited to 'src/libparser/node/paintnode.cpp')
| -rw-r--r-- | src/libparser/node/paintnode.cpp | 42 |
1 files changed, 18 insertions, 24 deletions
diff --git a/src/libparser/node/paintnode.cpp b/src/libparser/node/paintnode.cpp index 22c020e..0289622 100644 --- a/src/libparser/node/paintnode.cpp +++ b/src/libparser/node/paintnode.cpp @@ -57,39 +57,33 @@ PainterNode::~PainterNode() void PainterNode::run(ExecutionNode* previous) { - m_previousNode= previous; - if(nullptr == previous) - { - m_errors.insert(Dice::ERROR_CODE::NO_PREVIOUS_ERROR, QObject::tr("No previous node before Paint operator")); + if(isValid(!previous, Dice::ERROR_CODE::NO_PREVIOUS_ERROR, tr("No Previous node"))) return; - } + m_previousNode= previous; + Result* previousResult= previous->getResult(); - if(nullptr == previousResult) + if(isValid(!previousResult, Dice::ERROR_CODE::NO_VALID_RESULT, tr("No Valid result"))) return; m_diceResult= dynamic_cast<DiceResult*>(previousResult->getCopy()); - if(nullptr != m_diceResult) + if(isValid(!m_diceResult, Dice::ERROR_CODE::NO_VALID_RESULT, tr("No Valid Dice result"))) + return; + + QList<Die*> diceList= m_diceResult->getResultList(); + int pastDice= 0; + for(ColorItem& item : m_colors) { - QList<Die*> diceList= m_diceResult->getResultList(); - int pastDice= 0; - for(ColorItem& item : m_colors) + int current= item.colorNumber(); + QList<Die*>::iterator it; + for(it= diceList.begin() + pastDice; it != diceList.end() && current > 0; ++it) { - int current= item.colorNumber(); - QList<Die*>::iterator it; - for(it= diceList.begin() + pastDice; it != diceList.end() && current > 0; ++it) - { - (*it)->setColor(item.color()); - --current; - ++pastDice; - } + (*it)->setColor(item.color()); + --current; + ++pastDice; } - m_diceResult->setPrevious(previousResult); - m_result= m_diceResult; - } - if(nullptr != m_nextNode) - { - m_nextNode->run(this); } + m_diceResult->setPrevious(previousResult); + m_result= m_diceResult; } QString PainterNode::toString(bool wl) const |