aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node/scalaroperatornode.cpp
diff options
context:
space:
mode:
authorobiwankennedy <renaud@rolisteam.org>2014-01-07 18:56:13 +0100
committerobiwankennedy <renaud@rolisteam.org>2014-01-07 18:56:13 +0100
commita202319041b2204f20c0986d33e1334ee74cb817 (patch)
treeebf1b43eb1ec21ed53697bf5d660b18802a57dde /node/scalaroperatornode.cpp
parent427ff9f13867ac2eb0018c346c3c26adb4054f55 (diff)
downloadOneRoll-a202319041b2204f20c0986d33e1334ee74cb817.tar.gz
OneRoll-a202319041b2204f20c0986d33e1334ee74cb817.zip
Update scalaroperatornode.cpp
add scalar result
Diffstat (limited to 'node/scalaroperatornode.cpp')
-rw-r--r--node/scalaroperatornode.cpp61
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);
+ }
}
}