diff options
| author | 2015-03-06 00:27:37 +0100 | |
|---|---|---|
| committer | 2015-03-06 00:27:37 +0100 | |
| commit | 24d48effb863e458c00dcb1bea1ad5aa82309599 (patch) | |
| tree | 0fdf055720469553c37329bb4cf2042d597aae1e /diceparser.cpp | |
| parent | 3bae1f62ba10e60a8156523a5b0502cc1efafd6d (diff) | |
| download | OneRoll-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.cpp | 41 |
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; |