From fd5728eb399e10514afd0bb55b73d504d50b7517 Mon Sep 17 00:00:00 2001 From: obiwankennedy Date: Mon, 23 Apr 2018 13:41:46 +0200 Subject: reroll dice with replacement by expression --- node/rerolldicenode.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'node/rerolldicenode.cpp') diff --git a/node/rerolldicenode.cpp b/node/rerolldicenode.cpp index f51eb9e..a24ffa9 100644 --- a/node/rerolldicenode.cpp +++ b/node/rerolldicenode.cpp @@ -33,9 +33,11 @@ void RerollDiceNode::run(ExecutionNode* previous) //m_diceResult->setResultList(list); QList& list = m_diceResult->getResultList(); + QList toRemove; - for(Die* die: list) + for(int i = 0; i < list.size() ; ++i) { + auto die = list.at(i); if(m_validator->hasValid(die,false)) { if(m_instruction != nullptr) @@ -47,8 +49,10 @@ void RerollDiceNode::run(ExecutionNode* previous) auto lastResult = dynamic_cast(lastNode->getResult()); if(lastResult != nullptr) { + toRemove.append(die); list.append(lastResult->getResultList()); } + lastResult->clear(); } } else @@ -58,6 +62,12 @@ void RerollDiceNode::run(ExecutionNode* previous) } } + for(auto die: toRemove) + { + list.removeOne(die); + } + + if(nullptr!=m_nextNode) { m_nextNode->run(this); -- cgit v1.2.3-70-g09d2