aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node/jumpbackwardnode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/jumpbackwardnode.cpp')
-rw-r--r--node/jumpbackwardnode.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/node/jumpbackwardnode.cpp b/node/jumpbackwardnode.cpp
index c311ed2..c8b392b 100644
--- a/node/jumpbackwardnode.cpp
+++ b/node/jumpbackwardnode.cpp
@@ -1,32 +1,37 @@
#include "jumpbackwardnode.h"
+
JumpBackwardNode::JumpBackwardNode()
{
+ m_diceResult =new DiceResult();
+ m_result = m_diceResult;
}
qint64 JumpBackwardNode::getPriority() const
{
- return 1;
+ return 4;
}
QString JumpBackwardNode::toString() const
{
- return QString();
+ return QString("JumpBackwardNode");
}
void JumpBackwardNode::run(ExecutionNode* previous)
{
+ m_previousNode = previous;
ExecutionNode* parent = previous;
bool found=false;
- int i = 1;
+ int i = 3;
Result* result=NULL;
- while((NULL!=parent)&&(found))
+ while((NULL!=parent)&&(!found))
{
+
result = parent->getResult();
- if(NULL!=result)
+ if((NULL!=result))
{
--i;
- if(i==0)
+ if((i==0)&&(parent->getResult()->hasResultOfType(Result::DICE_LIST)))
{
found =true;
}
@@ -34,5 +39,19 @@ void JumpBackwardNode::run(ExecutionNode* previous)
parent = parent->getPreviousNode();
}
- m_result = result;
+ DiceResult* diceResult = dynamic_cast<DiceResult*>(result);
+ foreach(Die* die,diceResult->getResultList())
+ {
+ Die* tmpdie = new Die();
+ *tmpdie=*die;
+ m_diceResult->insertResult(tmpdie);
+ }
+
+ //*m_result = *result;
+ m_result->setPrevious(parent->getResult());
+
+ if(NULL!=m_nextNode)
+ {
+ m_nextNode->run(this);
+ }
}