aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--diceparser.cpp5
-rw-r--r--node/dicerollernode.cpp1
-rw-r--r--node/ifnode.cpp31
-rw-r--r--node/splitnode.cpp1
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());