aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/diceparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'diceparser.cpp')
-rw-r--r--diceparser.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/diceparser.cpp b/diceparser.cpp
index d07e555..0937733 100644
--- a/diceparser.cpp
+++ b/diceparser.cpp
@@ -38,6 +38,7 @@
#include "node/jumpbackwardnode.h"
#include "node/listsetrollnode.h"
#include "node/listaliasnode.h"
+#include "node/mergenode.h"
#define DEFAULT_FACES_NUMBER 10
@@ -59,6 +60,7 @@ DiceParser::DiceParser()
m_OptionOp->insert(QObject::tr("r"),Reroll);
m_OptionOp->insert(QObject::tr("e"),Explosing);
m_OptionOp->insert(QObject::tr("a"),RerollAndAdd);
+ m_OptionOp->insert(QObject::tr("m"),Merge);
//m_OptionOp->insert(QObject::tr("@"),JumpBackward);
@@ -443,7 +445,7 @@ QStringList DiceParser::getAllDiceResult(bool& hasAlias)
return stringListResult;
}
-void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues)
+void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues,bool& homogeneous)
{
ExecutionNode* next = getLeafNode();
Result* result=next->getResult();
@@ -455,6 +457,10 @@ void DiceParser::getLastDiceResult(ExportedDiceResult& diceValues)
DiceResult* diceResult = dynamic_cast<DiceResult*>(result);
if(NULL!=diceResult)
{
+ if(homogeneous)
+ {
+ homogeneous = diceResult->isHomogeneous();
+ }
quint64 face=0;
ListDiceResult listpair;
foreach(Die* die, diceResult->getResultList())
@@ -935,7 +941,16 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/
m_errorMap.insert(ExecutionNode::BAD_SYNTAXE,QObject::tr("Validator is missing after the e operator. Please, change it"));
}
}
+ break;
+ case Merge:
+ {
+ MergeNode* mergeNode = new MergeNode();
+ previous->setNextNode(mergeNode);
+ node = mergeNode;
+ isFine = true;
+ }
+ break;
}
}