aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node/repeaternode.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2020-08-22 17:09:57 +0200
committerRenaud G <renaud@rolisteam.org>2020-08-22 17:09:57 +0200
commit8209ac895fac8f993c13187195287f4021457da5 (patch)
tree98a318b93febe66426f2ab01d88ceabb8bdc9c1b /node/repeaternode.cpp
parent8ee9c4372efce878e817c49b375a8fd904ea5a43 (diff)
downloadOneRoll-8209ac895fac8f993c13187195287f4021457da5.tar.gz
OneRoll-8209ac895fac8f993c13187195287f4021457da5.zip
Fix repeat node.
Diffstat (limited to 'node/repeaternode.cpp')
-rw-r--r--node/repeaternode.cpp62
1 files changed, 25 insertions, 37 deletions
diff --git a/node/repeaternode.cpp b/node/repeaternode.cpp
index 93d946b..14ed956 100644
--- a/node/repeaternode.cpp
+++ b/node/repeaternode.cpp
@@ -25,24 +25,27 @@
#include "executionnode.h"
#include "parsingtoolbox.h"
#include "result/stringresult.h"
+#include <QDebug>
using InstructionSet= std::vector<ExecutionNode*>;
-QStringList allFirstResultAsString(std::vector<InstructionSet> startingNodes, bool& hasAlias)
+QStringList allFirstResultAsString(const InstructionSet& startingNodes, bool& hasAlias)
{
+ ParsingToolBox parsingBox;
// QStringList allResult;
QStringList stringListResult;
for(auto node : startingNodes)
{
- QVariant var;
- if(ParsingToolBox::hasResultOfType(Dice::RESULT_TYPE::STRING, node, var))
+ auto pair= parsingBox.hasResultOfType(Dice::RESULT_TYPE::STRING, node);
+ auto pairStr= parsingBox.hasResultOfType(Dice::RESULT_TYPE::SCALAR, node, true);
+ if(pair.first)
{
- stringListResult << var.toString();
+ stringListResult << pair.second.toString();
hasAlias= true;
}
- else if(hasResultOfType(Dice::RESULT_TYPE::SCALAR, node, var, true))
+ else if(pairStr.first)
{
- stringListResult << QString::number(var.toReal());
+ stringListResult << QString::number(pairStr.second.toReal());
hasAlias= true;
}
}
@@ -102,37 +105,22 @@ void RepeaterNode::run(ExecutionNode* previousNode)
}
else
{
- auto list= allFirstResultAsString(m_startingNodes, true);
- // auto string= new StringResult();
- // QStringList list;
- /*std::for_each(resultVec.begin(), resultVec.end(), [&list](Result* result) {
- auto value= result->getResult(Dice::RESULT_TYPE::SCALAR).toDouble();
- auto diceList= result->getResult(Dice::RESULT_TYPE::DICE_LIST).value<QList<Die*>>();
- auto string= result->getResult(Dice::RESULT_TYPE::STRING).toString();
-
- if(!string.isEmpty())
- list.append(string);
- else
- {
- QStringList diceStr;
- std::transform(diceList.begin(), diceList.end(), std::back_inserter(diceStr), [](Die* die) {
- auto values= die->getListValue();
-
- QStringList valuesStr;
- std::transform(values.begin(), values.end(), std::back_inserter(valuesStr),
- [](qint64 val) { return QString::number(val); });
-
- if(valuesStr.size() == 1)
- return QStringLiteral("%1").arg(die->getValue());
- else
- return QStringLiteral("%1 [%2]").arg(die->getValue()).arg(valuesStr.join(","));
- });
- list.append(QStringLiteral("%1 - Details [%2]").arg(value).arg(diceStr.join(",")));
- }
- });
- string->addText(list.join('\n'));
- string->finished();
- m_result= string;*/
+ auto string= new StringResult();
+
+ QStringList listOfStrResult;
+ for(auto instructions : m_startingNodes)
+ {
+ ParsingToolBox parsingBox;
+ parsingBox.setStartNodes(instructions);
+ auto finalString= parsingBox.finalStringResult();
+ listOfStrResult << finalString;
+ }
+ if(!listOfStrResult.isEmpty())
+ string->addText(listOfStrResult.join('\n'));
+
+ m_result= string;
+
+ qDebug().noquote() << listOfStrResult.join('\n');
}
if(nullptr != m_nextNode)