aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/node/repeaternode.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2022-04-29 10:48:09 +0200
committerRenaud G <renaud@rolisteam.org>2022-04-29 10:48:09 +0200
commit07c5f6ec23fcf9237a24e71adcfacabce677f818 (patch)
tree588e8c5f82b9163181fad3581f610e6f1d88cba4 /node/repeaternode.cpp
parenta9153f1615a842cfb9e9bcda4d9071e202618569 (diff)
downloadOneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.tar.gz
OneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.zip
Change file organization.
Diffstat (limited to 'node/repeaternode.cpp')
-rw-r--r--node/repeaternode.cpp162
1 files changed, 0 insertions, 162 deletions
diff --git a/node/repeaternode.cpp b/node/repeaternode.cpp
deleted file mode 100644
index f93a9fe..0000000
--- a/node/repeaternode.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2019 by Renaud Guezennec *
- * http://www.rolisteam.org/contact *
- * *
- * This file is part of DiceParser *
- * *
- * DiceParser is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-#include "node/repeaternode.h"
-
-#include "executionnode.h"
-#include "result/scalarresult.h"
-#include "result/stringresult.h"
-#include <QDebug>
-#include <diceparser/diceparserhelper.h>
-#include <diceparser/parsingtoolbox.h>
-
-using InstructionSet= std::vector<ExecutionNode*>;
-
-QStringList allFirstResultAsString(const InstructionSet& startingNodes, bool& hasAlias)
-{
- ParsingToolBox parsingBox;
- // QStringList allResult;
- QStringList stringListResult;
- for(auto node : startingNodes)
- {
- auto pair= parsingBox.hasResultOfType(Dice::RESULT_TYPE::STRING, node);
- auto pairStr= parsingBox.hasResultOfType(Dice::RESULT_TYPE::SCALAR, node, true);
- if(pair.first)
- {
- stringListResult << pair.second.toString();
- hasAlias= true;
- }
- else if(pairStr.first)
- {
- stringListResult << QString::number(pairStr.second.toReal());
- hasAlias= true;
- }
- }
- return stringListResult;
-}
-
-std::vector<ExecutionNode*> makeCopy(std::vector<ExecutionNode*> cmds)
-{
- std::vector<ExecutionNode*> copy;
- std::transform(cmds.begin(), cmds.end(), std::back_inserter(copy),
- [](ExecutionNode* node) { return node->getCopy(); });
- return copy;
-}
-
-RepeaterNode::RepeaterNode() {}
-
-void RepeaterNode::run(ExecutionNode* previousNode)
-{
- m_previousNode= previousNode;
-
- if(nullptr == m_times || m_cmd.empty())
- return;
-
- m_times->run(this);
- m_times= ParsingToolBox::getLeafNode(m_times);
- auto times= m_times->getResult();
- if(!times)
- return;
-
- std::vector<InstructionSet> m_startingNodes;
- auto timeCount= times->getResult(Dice::RESULT_TYPE::SCALAR).toInt();
- auto cmd= makeCopy(m_cmd);
- std::vector<Result*> resultVec;
- for(int i= 0; i < timeCount; ++i)
- {
- m_startingNodes.push_back(cmd);
- std::for_each(cmd.begin(), cmd.end(),
- [this, &resultVec](ExecutionNode* node)
- {
- node->run(this);
- auto end= ParsingToolBox::getLeafNode(node);
- auto leafResult= end->getResult();
-
- if(nullptr == leafResult)
- return;
-
- resultVec.push_back(leafResult);
- });
- cmd= makeCopy(m_cmd);
- }
- if(m_sumAll)
- {
- auto scalar= new ScalarResult();
- qreal value= 0.0;
- std::for_each(resultVec.begin(), resultVec.end(),
- [&value](Result* result) { value+= result->getResult(Dice::RESULT_TYPE::SCALAR).toDouble(); });
- scalar->setValue(value);
- m_result= scalar;
- }
- else
- {
- auto string= new StringResult();
-
- QStringList listOfStrResult;
- for(auto instructions : m_startingNodes)
- {
- ParsingToolBox parsingBox;
- parsingBox.setStartNodes(instructions);
- auto finalString
- = parsingBox.finalStringResult([](const QString& result, const QString&, bool) { return result; });
- listOfStrResult << finalString;
- }
- if(!listOfStrResult.isEmpty())
- string->addText(listOfStrResult.join('\n'));
-
- m_result= string;
-
- // qDebug().noquote() << listOfStrResult.join('\n');
- }
-
- if(nullptr != m_nextNode)
- m_nextNode->run(this);
-}
-
-QString RepeaterNode::toString(bool withLabel) const
-{
- return withLabel ? QStringLiteral("") : QStringLiteral("");
-}
-
-qint64 RepeaterNode::getPriority() const
-{
- return 4;
-}
-
-ExecutionNode* RepeaterNode::getCopy() const
-{
- return nullptr;
-}
-
-void RepeaterNode::setCommand(const std::vector<ExecutionNode*>& cmd)
-{
- m_cmd= cmd;
-}
-
-void RepeaterNode::setTimeNode(ExecutionNode* time)
-{
- m_times= time;
-}
-
-void RepeaterNode::setSumAll(bool b)
-{
- m_sumAll= b;
-}