diff options
| author | 2014-01-07 18:56:13 +0100 | |
|---|---|---|
| committer | 2014-01-07 18:56:13 +0100 | |
| commit | a202319041b2204f20c0986d33e1334ee74cb817 (patch) | |
| tree | ebf1b43eb1ec21ed53697bf5d660b18802a57dde | |
| parent | 427ff9f13867ac2eb0018c346c3c26adb4054f55 (diff) | |
| download | OneRoll-a202319041b2204f20c0986d33e1334ee74cb817.tar.gz OneRoll-a202319041b2204f20c0986d33e1334ee74cb817.zip | |
Update scalaroperatornode.cpp
add scalar result
| -rw-r--r-- | node/scalaroperatornode.cpp | 61 |
1 files changed, 34 insertions, 27 deletions
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp index 2df0c04..c1a037a 100644 --- a/node/scalaroperatornode.cpp +++ b/node/scalaroperatornode.cpp @@ -1,15 +1,19 @@ #include "scalaroperatornode.h" #include <QDebug> +#include "diceresult.h" + ScalarOperatorNode::ScalarOperatorNode() - : m_internalNode(NULL) + : m_internalNode(NULL),m_myScalarResult(new ScalarResult()) { m_scalarOperationList.insert('+',PLUS); m_scalarOperationList.insert('-',MINUS); m_scalarOperationList.insert('x',MULTIPLICATION); m_scalarOperationList.insert('*',MULTIPLICATION); m_scalarOperationList.insert('/',DIVIDE); + + m_result = m_myScalarResult; } void ScalarOperatorNode::run(ExecutionNode* previous) @@ -20,36 +24,39 @@ void ScalarOperatorNode::run(ExecutionNode* previous) } if(NULL!=previous) { - DiceResult* previousResult = previous->getResult(); - ExecutionNode* internal = m_internalNode; - while(NULL != internal->getNextNode() ) + DiceResult* previousResult = static_cast<DiceResult*>(previous->getResult()); + if(NULL!=previousResult) { - internal = internal->getNextNode(); - } - DiceResult* internalResult = internal->getResult(); + ExecutionNode* internal = m_internalNode; + while(NULL != internal->getNextNode() ) + { + internal = internal->getNextNode(); + } + Result* internalResult = internal->getResult(); - switch(m_myOperator) - { - case PLUS: - m_result.insertResult(add(previousResult->getSum(),internalResult->getSum())); - break; - case MINUS: - m_result.insertResult(substract(previousResult->getSum(),internalResult->getSum())); - break; - case MULTIPLICATION: - m_result.insertResult(multiple(previousResult->getSum(),internalResult->getSum())); - break; - case DIVIDE: - m_result.insertResult(divide(previousResult->getSum(),internalResult->getSum())); - break; - default: - break; + switch(m_myOperator) + { + case PLUS: + m_myScalarResult->setValue(add(previousResult->getScalar(),internalResult->getScalar())); + break; + case MINUS: + m_myScalarResult->setValue(substract(previousResult->getScalar(),internalResult->getScalar())); + break; + case MULTIPLICATION: + m_myScalarResult->setValue(multiple(previousResult->getScalar(),internalResult->getScalar())); + break; + case DIVIDE: + m_myScalarResult->setValue(divide(previousResult->getScalar(),internalResult->getScalar())); + break; + default: + break; - } + } - if(NULL!=m_nextNode) - { - m_nextNode->run(this); + if(NULL!=m_nextNode) + { + m_nextNode->run(this); + } } } |