aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--node/mergenode.cpp68
1 files changed, 34 insertions, 34 deletions
diff --git a/node/mergenode.cpp b/node/mergenode.cpp
index c4c1543..15f2fa7 100644
--- a/node/mergenode.cpp
+++ b/node/mergenode.cpp
@@ -40,46 +40,46 @@ void MergeNode::run(ExecutionNode* previous)
for(auto start : *m_startList)
{
ExecutionNode* last= getLatestNode(start);
- if(nullptr != last)
+ if(nullptr == last || nullptr == previousLast)
+ continue;
+
+ auto startResult= start->getResult();
+ if(nullptr == startResult)
+ continue;
+
+ startResult->setPrevious(previousLast->getResult());
+ previousLast->setNextNode(start);
+
+ previousLast= last;
+ Result* tmpResult= last->getResult();
+ while(nullptr != tmpResult)
{
- if(nullptr != previousLast)
+ DiceResult* dice= dynamic_cast<DiceResult*>(tmpResult);
+ if(nullptr == dice)
{
- auto startResult= start->getResult();
- startResult->setPrevious(previousLast->getResult());
- previousLast->setNextNode(start);
- }
- previousLast= last;
- Result* tmpResult= last->getResult();
- while(nullptr != tmpResult)
- {
- DiceResult* dice= dynamic_cast<DiceResult*>(tmpResult);
- if(nullptr != dice)
+ ///@todo TODO improve here to set homogeneous while is really
+ m_diceResult->setHomogeneous(false);
+ for(auto& die : dice->getResultList())
{
- ///@todo TODO improve here to set homogeneous while is really
- m_diceResult->setHomogeneous(false);
- for(auto& die : dice->getResultList())
+ if(!m_diceResult->getResultList().contains(die) && (!die->hasBeenDisplayed()))
{
- if(!m_diceResult->getResultList().contains(die) && (!die->hasBeenDisplayed()))
- {
- Die* tmpdie= new Die(*die);
- //*tmpdie= *die;
- die->displayed();
- m_diceResult->getResultList().append(tmpdie);
- }
+ Die* tmpdie= new Die(*die);
+ die->displayed();
+ m_diceResult->getResultList().append(tmpdie);
}
}
- auto it= std::find_if(pastResult.begin(), pastResult.end(),
- [tmpResult](const Result* a) { return (a == tmpResult->getPrevious()); });
- if(it == pastResult.end())
- {
- pastResult.push_back(previousLast->getResult());
- tmpResult= tmpResult->getPrevious();
- }
- else
- {
- tmpResult->setPrevious(nullptr);
- tmpResult= nullptr;
- }
+ }
+ auto it= std::find_if(pastResult.begin(), pastResult.end(),
+ [tmpResult](const Result* a) { return (a == tmpResult->getPrevious()); });
+ if(it == pastResult.end())
+ {
+ pastResult.push_back(previousLast->getResult());
+ tmpResult= tmpResult->getPrevious();
+ }
+ else
+ {
+ tmpResult->setPrevious(nullptr);
+ tmpResult= nullptr;
}
}
}