diff options
| author | 2017-04-29 16:12:16 +0200 | |
|---|---|---|
| committer | 2017-04-29 16:12:16 +0200 | |
| commit | e1b01fe2cb5d5605f05f01521cd1074c6f57ff37 (patch) | |
| tree | 1b5c17ffcfd60256bcc38d25d9eac750a95b7457 | |
| parent | 9d4feb28fdfdf9635a87628cb4b984fbccb5ee5b (diff) | |
| parent | 29c80721f858f84bb737a10e7cd012e4a9795399 (diff) | |
| download | OneRoll-e1b01fe2cb5d5605f05f01521cd1074c6f57ff37.tar.gz OneRoll-e1b01fe2cb5d5605f05f01521cd1074c6f57ff37.zip | |
Merge branch 'master' of github.com:Rolisteam/DiceParser
| -rw-r--r-- | diceparser.cpp | 5 | ||||
| -rw-r--r-- | node/dicerollernode.cpp | 1 | ||||
| -rw-r--r-- | node/ifnode.cpp | 31 | ||||
| -rw-r--r-- | node/splitnode.cpp | 1 |
4 files changed, 27 insertions, 11 deletions
diff --git a/diceparser.cpp b/diceparser.cpp index 31bcf59..796850f 100644 --- a/diceparser.cpp +++ b/diceparser.cpp @@ -644,6 +644,11 @@ bool DiceParser::readDice(QString& str,ExecutionNode* & node) // qint64 face = abs(num - end); //qDebug() << face << end; DiceRollerNode* drNode = new DiceRollerNode(max,min); + + if(hasOp) + { + drNode->setOperator(op); + } node = drNode; ExecutionNode* current = drNode; while(readOption(str,current)) diff --git a/node/dicerollernode.cpp b/node/dicerollernode.cpp index 9ca0d35..fd92b93 100644 --- a/node/dicerollernode.cpp +++ b/node/dicerollernode.cpp @@ -92,4 +92,5 @@ Die::ArithmeticOperator DiceRollerNode::getOperator() const void DiceRollerNode::setOperator(const Die::ArithmeticOperator &dieOperator) { m_operator = dieOperator; + m_diceResult->setOperator(dieOperator); } diff --git a/node/ifnode.cpp b/node/ifnode.cpp index 91ad199..da852b3 100644 --- a/node/ifnode.cpp +++ b/node/ifnode.cpp @@ -34,48 +34,57 @@ IfNode::~IfNode() void IfNode::run(ExecutionNode *previous) { m_previousNode = previous; - if(NULL==previous) + if(nullptr==previous) { return; } ExecutionNode* previousLoop = previous; - ExecutionNode* nextNode = NULL; - bool runNext = (NULL==m_nextNode) ? false : true; + ExecutionNode* nextNode = nullptr; + bool runNext = (nullptr==m_nextNode) ? false : true; Result* previousResult = previous->getResult(); m_result = previousResult; - if(NULL!=m_result) + if(nullptr!=m_result) { qreal value = previousResult->getResult(Result::SCALAR).toReal(); - if(NULL!=m_validator) + if(nullptr!=m_validator) { DiceResult* previousDiceResult = dynamic_cast<DiceResult*>(previousResult); - if(NULL!=previousDiceResult) + if(nullptr!=previousDiceResult) { QList<Die*> diceList=previousDiceResult->getResultList(); + if(m_conditionType == OnEach) { for(Die* dice : diceList) { + qDebug()<< "dice value:" << dice->getValue(); if(m_validator->hasValid(dice,true,true)) { - nextNode = (NULL==m_true) ? NULL: m_true->getCopy(); + qDebug()<< "true"; + nextNode = (nullptr==m_true) ? nullptr: m_true->getCopy(); } else { - nextNode = (NULL==m_false) ? NULL: m_false->getCopy(); + qDebug()<< "false"; + nextNode = (nullptr==m_false) ? nullptr: m_false->getCopy(); } - if(NULL!=nextNode) + qDebug()<< "dice value:" << dice->getValue() << "next node" << nextNode << "m_true" << m_true; + + if(nullptr!=nextNode) { - if(NULL==previousLoop->getNextNode()) + if(nullptr==previousLoop->getNextNode()) { + qDebug() << "iniside loop"; previousLoop->setNextNode(nextNode); } - if(NULL==m_nextNode) + if(nullptr==m_nextNode) { + qDebug() << "next node" ; m_nextNode = nextNode; } + qDebug() << "before run"; nextNode->run(previousLoop); previousLoop = getLeafNode(nextNode); } diff --git a/node/splitnode.cpp b/node/splitnode.cpp index 7c01910..a074248 100644 --- a/node/splitnode.cpp +++ b/node/splitnode.cpp @@ -46,6 +46,7 @@ void SplitNode::run(ExecutionNode* previous) for(qint64 value : oldDie->getListValue()) { Die* tmpdie = new Die(); + tmpdie->insertRollValue(value); tmpdie->setFaces(oldDie->getFaces()); tmpdie->setValue(value); tmpdie->setOp(oldDie->getOp()); |