aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2019-07-10 11:49:45 +0200
committerRenaud G <renaud@rolisteam.org>2019-07-12 22:06:35 +0200
commit9698a39a46f736cf37e31f8940e7c1a0a164185b (patch)
tree2193ae89ae6cfb59d7b6eed443992bd0245ac5a4 /node
parent64ca7904fd36ad86826b5d5c72f47ffdf0ff365a (diff)
downloadOneRoll-9698a39a46f736cf37e31f8940e7c1a0a164185b.tar.gz
OneRoll-9698a39a46f736cf37e31f8940e7c1a0a164185b.zip
Add valueslistnode
Diffstat (limited to 'node')
-rw-r--r--node/valueslistnode.cpp58
-rw-r--r--node/valueslistnode.h24
2 files changed, 82 insertions, 0 deletions
diff --git a/node/valueslistnode.cpp b/node/valueslistnode.cpp
new file mode 100644
index 0000000..e022741
--- /dev/null
+++ b/node/valueslistnode.cpp
@@ -0,0 +1,58 @@
+#include "valueslistnode.h"
+
+ValuesListNode::ValuesListNode() : m_diceResult(new DiceResult())
+{
+ m_result= m_diceResult;
+}
+
+void ValuesListNode::run(ExecutionNode* previous)
+{
+ m_previousNode= previous;
+ for(auto node : m_data)
+ {
+ node->run(this);
+ auto result= node->getResult();
+ if(!result)
+ continue;
+ auto val= result->getResult(Result::SCALAR).toInt();
+ Die* die= new Die();
+ die->displayed();
+ die->insertRollValue(val);
+ m_diceResult->insertResult(die);
+ }
+
+ if(nullptr != m_nextNode)
+ {
+ m_nextNode->run(this);
+ }
+}
+
+void ValuesListNode::insertValue(ExecutionNode* value)
+{
+ m_data.push_back(value);
+}
+ExecutionNode* ValuesListNode::getCopy() const
+{
+ ValuesListNode* node= new ValuesListNode();
+ if(nullptr != m_nextNode)
+ {
+ node->setNextNode(m_nextNode->getCopy());
+ }
+ return node;
+}
+QString ValuesListNode::toString(bool wl) const
+{
+ if(wl)
+ {
+ return QString("%1 [label=\"ValuesListNode list:\"]").arg(m_id);
+ }
+ else
+ {
+ return m_id;
+ }
+}
+qint64 ValuesListNode::getPriority() const
+{
+ qint64 priority= 4;
+ return priority;
+}
diff --git a/node/valueslistnode.h b/node/valueslistnode.h
new file mode 100644
index 0000000..100f275
--- /dev/null
+++ b/node/valueslistnode.h
@@ -0,0 +1,24 @@
+#ifndef VALUESLISTNODE_H
+#define VALUESLISTNODE_H
+
+#include "executionnode.h"
+#include "result/diceresult.h"
+
+class ValuesListNode : public ExecutionNode
+{
+public:
+ ValuesListNode();
+
+ virtual void run(ExecutionNode* previous= nullptr) override;
+ virtual QString toString(bool) const override;
+ virtual qint64 getPriority() const override;
+ virtual ExecutionNode* getCopy() const override;
+
+ void insertValue(ExecutionNode*);
+
+private:
+ std::vector<ExecutionNode*> m_data;
+ DiceResult* m_diceResult = nullptr;
+};
+
+#endif // VALUESLISTNODE_H