aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/diceparser.cpp
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2015-03-06 00:27:37 +0100
committerRenaud G <renaud@rolisteam.org>2015-03-06 00:27:37 +0100
commit24d48effb863e458c00dcb1bea1ad5aa82309599 (patch)
tree0fdf055720469553c37329bb4cf2042d597aae1e /diceparser.cpp
parent3bae1f62ba10e60a8156523a5b0502cc1efafd6d (diff)
downloadOneRoll-24d48effb863e458c00dcb1bea1ad5aa82309599.tar.gz
OneRoll-24d48effb863e458c00dcb1bea1ad5aa82309599.zip
-Add new node to roll die as value of list.
Diffstat (limited to 'diceparser.cpp')
-rw-r--r--diceparser.cpp41
1 files changed, 29 insertions, 12 deletions
diff --git a/diceparser.cpp b/diceparser.cpp
index 3f1c21c..ea6dcc9 100644
--- a/diceparser.cpp
+++ b/diceparser.cpp
@@ -36,6 +36,7 @@
#include "node/parenthesesnode.h"
#include "node/helpnode.h"
#include "node/jumpbackwardnode.h"
+#include "node/listsetrollnode.h"
#define DEFAULT_FACES_NUMBER 10
@@ -316,26 +317,42 @@ QString DiceParser::displayResult()
bool DiceParser::readDice(QString& str,ExecutionNode* & node)
{
- DiceOperator myOperator;
+ DiceOperator currentOperator;
- if(readDiceOperator(str,myOperator))
+ if(readDiceOperator(str,currentOperator))
{
int num;
- if(m_parsingToolbox->readNumber(str,num))
+ if(currentOperator==D)
{
- DiceRollerNode* drNode = new DiceRollerNode(num);
- // dice.m_diceOp = myOperator;
- // dice.m_faces = num;
- node = drNode;
- ExecutionNode* current = drNode;
- while(readOption(str,current))
+ if(m_parsingToolbox->readNumber(str,num))
{
- current = getLatestNode(current);
- }
+ DiceRollerNode* drNode = new DiceRollerNode(num);
+ // dice.m_diceOp = myOperator;
+ // dice.m_faces = num;
+ node = drNode;
+ ExecutionNode* current = drNode;
+ while(readOption(str,current))
+ {
+ current = getLatestNode(current);
+ }
- return true;
+ return true;
+ }
}
+ else if(currentOperator ==L)
+ {
+ QStringList list;
+ if(m_parsingToolbox->readList(str,list))
+ {
+ qDebug() << list;
+ ListSetRollNode* lsrNode = new ListSetRollNode();
+ lsrNode->setListValue(list);
+ node = lsrNode;
+ return true;
+ }
+ }
+
}
return false;