aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/diceparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'diceparser.cpp')
-rw-r--r--diceparser.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/diceparser.cpp b/diceparser.cpp
index 5ec7122..8efa83e 100644
--- a/diceparser.cpp
+++ b/diceparser.cpp
@@ -39,6 +39,7 @@
#include "node/listsetrollnode.h"
#include "node/mergenode.h"
#include "node/numbernode.h"
+#include "node/occurencecountnode.h"
#include "node/paintnode.h"
#include "node/parenthesesnode.h"
#include "node/rerolldicenode.h"
@@ -78,6 +79,7 @@ DiceParser::DiceParser()
m_OptionOp->insert(QStringLiteral("u"), Split);
m_OptionOp->insert(QStringLiteral("g"), Group);
m_OptionOp->insert(QStringLiteral("b"), Bind);
+ m_OptionOp->insert(QStringLiteral("o"), Occurences);
m_aliasList= new QList<DiceAlias*>();
@@ -1113,6 +1115,31 @@ bool DiceParser::readOption(QString& str, ExecutionNode* previous) //,
found= true;
}
break;
+ case Occurences:
+ {
+ qint64 number= 0;
+ auto occNode= new OccurenceCountNode();
+ if(m_parsingToolbox->readNumber(str, number))
+ {
+ occNode->setWidth(number);
+ Validator* validator= m_parsingToolbox->readCompositeValidator(str);
+ if(validator)
+ {
+ occNode->setValidator(validator);
+ }
+ else if(m_parsingToolbox->readComma(str))
+ {
+ if(m_parsingToolbox->readNumber(str, number))
+ {
+ occNode->setHeight(number);
+ }
+ }
+ }
+ previous->setNextNode(occNode);
+ node= occNode;
+ found= true;
+ }
+ break;
case Painter:
{
PainterNode* painter= new PainterNode();