diff options
| author | 2015-10-11 16:06:53 +0200 | |
|---|---|---|
| committer | 2015-10-11 16:06:53 +0200 | |
| commit | 2036d7d5e028c08b022390d607a2ead188e7cc90 (patch) | |
| tree | a527c6409927189d1a5d126ac1576eab7e93caf5 /diceparser.cpp | |
| parent | 84691771b54365160f5b1d54033e00187dbbf043 (diff) | |
| parent | 29f0126a7b8ae3479597252f5056d5e67b6ed10d (diff) | |
| download | OneRoll-2036d7d5e028c08b022390d607a2ead188e7cc90.tar.gz OneRoll-2036d7d5e028c08b022390d607a2ead188e7cc90.zip | |
Merge branch 'rangeInList'
resolved conflicts and merge rangeInList in master.
Conflicts:
HelpMe.md
diceparser.cpp
parsingtoolbox.cpp
result/result.cpp
result/stringresult.h
Diffstat (limited to 'diceparser.cpp')
| -rw-r--r-- | diceparser.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/diceparser.cpp b/diceparser.cpp index 802b5f2..b7097d3 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -146,7 +146,6 @@ void DiceParser::insertAlias(DiceAlias* dice, int i) bool DiceParser::parseLine(QString str) { - m_currentTreeHasSeparator = false; m_errorMap.clear(); if(NULL!=m_start) { @@ -594,7 +593,7 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node) else if(m_parsingToolbox->readDiceRange(str,num,end)) { - int face = abs(num - end)+1; + qint64 face = abs(num - end)+1; DiceRollerNode* drNode = new DiceRollerNode(face,num); node = drNode; ExecutionNode* current = drNode; @@ -608,9 +607,16 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node) else if(currentOperator ==L) { QStringList list; - if(m_parsingToolbox->readList(str,list)) + QList<Range> listRange; + ParsingToolBox::LIST_OPERATOR op = m_parsingToolbox->readListOperator(str); + if(m_parsingToolbox->readList(str,list,listRange)) { ListSetRollNode* lsrNode = new ListSetRollNode(); + lsrNode->setRangeList(listRange); + if(op == ParsingToolBox::UNIQUE) + { + lsrNode->setUnique(true); + } lsrNode->setListValue(list); node = lsrNode; return true; @@ -744,7 +750,6 @@ bool DiceParser::readOperator(QString& str,ExecutionNode* previous) previous->setNextNode(nodeExec); m_currentTreeHasSeparator = true; return true; - } } else @@ -801,7 +806,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ { case Keep: { - int myNumber=0; + qint64 myNumber=0; bool ascending = m_parsingToolbox->readAscending(str); if(m_parsingToolbox->readNumber(str,myNumber)) { @@ -822,7 +827,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ break; case KeepAndExplose: { - int myNumber=0; + qint64 myNumber=0; bool ascending = m_parsingToolbox->readAscending(str); if(m_parsingToolbox->readNumber(str,myNumber)) { @@ -861,7 +866,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ break; case Count: { - Validator* validator = m_parsingToolbox->readValidator(str); + //Validator* validator = m_parsingToolbox->readValidator(str); + Validator* validator = m_parsingToolbox->readCompositeValidator(str); if(NULL!=validator) { /// @todo display warning here. @@ -884,7 +890,8 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ case Reroll: case RerollAndAdd: { - Validator* validator = m_parsingToolbox->readValidator(str); + //Validator* validator = m_parsingToolbox->readValidator(str); + Validator* validator = m_parsingToolbox->readCompositeValidator(str); if(NULL!=validator) { /// @todo display warning here. @@ -909,7 +916,7 @@ bool DiceParser::readOption(QString& str,ExecutionNode* previous, bool hasDice)/ break; case Explosing: { - Validator* validator = m_parsingToolbox->readValidator(str); + Validator* validator = m_parsingToolbox->readCompositeValidator(str); if(NULL!=validator) { if(!m_parsingToolbox->isValidValidator(previous,validator)) @@ -964,7 +971,7 @@ QString DiceParser::humanReadableError() bool DiceParser::readOperand(QString& str,ExecutionNode* & node) { - int myNumber=1; + qint64 myNumber=1; if(m_parsingToolbox->readNumber(str,myNumber)) { @@ -980,7 +987,7 @@ void DiceParser::writeDownDotTree(QString filepath) { QString str("digraph ExecutionTree {\n"); m_start->generateDotTree(str); - str.append("}"); + str.append("}\n"); QFile file(filepath); |