From 70e09294fca1022d9370fe2fd631a98480c284b2 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Fri, 16 Sep 2016 20:35:11 +0200 Subject: -Fix some value on diceparser. --- node/jumpbackwardnode.cpp | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'node/jumpbackwardnode.cpp') diff --git a/node/jumpbackwardnode.cpp b/node/jumpbackwardnode.cpp index 25056b1..b1e7889 100644 --- a/node/jumpbackwardnode.cpp +++ b/node/jumpbackwardnode.cpp @@ -24,6 +24,7 @@ JumpBackwardNode::JumpBackwardNode() { m_previousNode=NULL; + m_backwardNode = NULL; m_diceResult =new DiceResult(); m_result = m_diceResult; } @@ -45,6 +46,46 @@ QString JumpBackwardNode::toString(bool wl) const return m_id; } } +void JumpBackwardNode::generateDotTree(QString& s) +{ + s.append(toString(true)); + s.append(";\n"); + + if(NULL!=m_backwardNode) + { + s.append(toString(false)); + s.append(" -> "); + s.append(m_backwardNode->toString(false)); + s.append("[label=\"backward\"];\n"); + //m_backwardNode->generateDotTree(s); + } + + if(NULL!=m_nextNode) + { + s.append(toString(false)); + s.append(" -> "); + s.append(m_nextNode->toString(false)); + s.append("[label=\"next\"];\n"); + m_nextNode->generateDotTree(s); + } + else + { + s.append(toString(false)); + s.append(" -> "); + s.append("NULL;\n"); + + if(NULL!=m_result) + { + s.append(toString(false)); + s.append(" ->"); + s.append(m_result->toString(false)); + s.append(" [label=\"Result\"];\n"); + m_result->generateDotTree(s); + } + } + +} + void JumpBackwardNode::run(ExecutionNode* previous) { m_previousNode = previous; @@ -62,6 +103,7 @@ void JumpBackwardNode::run(ExecutionNode* previous) if((i==0)&&(result->hasResultOfType(Result::DICE_LIST))) { found =true; + m_backwardNode = parent; } } if(!found) @@ -88,7 +130,7 @@ void JumpBackwardNode::run(ExecutionNode* previous) } } - m_result->setPrevious(parent->getResult()); + m_result->setPrevious(previous->getResult()); if(NULL!=m_nextNode) { -- cgit v1.2.3-70-g09d2 From d70776644de9e2774483000327f4e229bd8ab50b Mon Sep 17 00:00:00 2001 From: Renaud G Date: Sun, 25 Sep 2016 04:20:08 +0200 Subject: -remove limit of 3 jump. Now the operation is jumping backward until it find its first dice result or it has reached the beginning. --- node/jumpbackwardnode.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'node/jumpbackwardnode.cpp') diff --git a/node/jumpbackwardnode.cpp b/node/jumpbackwardnode.cpp index b1e7889..0b2cbf6 100644 --- a/node/jumpbackwardnode.cpp +++ b/node/jumpbackwardnode.cpp @@ -91,20 +91,29 @@ void JumpBackwardNode::run(ExecutionNode* previous) m_previousNode = previous; ExecutionNode* parent = previous; bool found=false; - int i = 3; + //int i = 3; Result* result=NULL; while((NULL!=parent)&&(!found)) { result = parent->getResult(); - if((NULL!=result)) + if(NULL!=result) { - --i; - if((i==0)&&(result->hasResultOfType(Result::DICE_LIST))) + //--i; + if(/*(i==0)&&*/(result->hasResultOfType(Result::DICE_LIST))) { found =true; m_backwardNode = parent; } + else + { + JumpBackwardNode* jpNode = dynamic_cast(parent); + if(NULL!=jpNode) + { + found = true; + m_backwardNode = parent; + } + } } if(!found) { -- cgit v1.2.3-70-g09d2