From 9698a39a46f736cf37e31f8940e7c1a0a164185b Mon Sep 17 00:00:00 2001 From: Renaud G Date: Wed, 10 Jul 2019 11:49:45 +0200 Subject: Add valueslistnode --- node/valueslistnode.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 node/valueslistnode.cpp (limited to 'node/valueslistnode.cpp') 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; +} -- cgit v1.2.3-70-g09d2 From 713f548d5c3ddabd7f8a65d19edb38205a159091 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Fri, 12 Jul 2019 22:40:01 +0200 Subject: Add values list node --- diceparser.cpp | 9 ++++++++- node/valueslistnode.cpp | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'node/valueslistnode.cpp') diff --git a/diceparser.cpp b/diceparser.cpp index 0de05fc..75247ba 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -28,6 +28,7 @@ #include "node/bind.h" #include "node/countexecutenode.h" +#include "node/dicerollernode.h" #include "node/explodedicenode.h" #include "node/filternode.h" #include "node/groupnode.h" @@ -49,10 +50,10 @@ #include "node/startingnode.h" #include "node/stringnode.h" #include "node/uniquenode.h" +#include "node/valueslistnode.h" #include "node/variablenode.h" #include "booleancondition.h" -#include "node/dicerollernode.h" #include "parsingtoolbox.h" #include "range.h" #include "validator.h" @@ -342,6 +343,12 @@ bool DiceParser::readValuesList(QString& str, ExecutionNode*& node) variableNode->setData(&m_startNodes); values->insertValue(variableNode); } + else if(ParsingToolBox::readNumber(var, number)) + { + NumberNode* numberNode= new NumberNode(); + numberNode->setNumber(number); + values->insertValue(numberNode); + } } node= values; return true; diff --git a/node/valueslistnode.cpp b/node/valueslistnode.cpp index e022741..b31ee84 100644 --- a/node/valueslistnode.cpp +++ b/node/valueslistnode.cpp @@ -1,5 +1,7 @@ #include "valueslistnode.h" +#include "variablenode.h" + ValuesListNode::ValuesListNode() : m_diceResult(new DiceResult()) { m_result= m_diceResult; @@ -16,7 +18,9 @@ void ValuesListNode::run(ExecutionNode* previous) continue; auto val= result->getResult(Result::SCALAR).toInt(); Die* die= new Die(); - die->displayed(); + auto dyna= dynamic_cast(node); + if(nullptr != dyna) + die->displayed(); die->insertRollValue(val); m_diceResult->insertResult(die); } -- cgit v1.2.3-70-g09d2