diff options
Diffstat (limited to 'node/jumpbackwardnode.cpp')
| -rw-r--r-- | node/jumpbackwardnode.cpp | 33 |
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); + } } |