diff options
| author | 2019-12-25 03:48:11 +0100 | |
|---|---|---|
| committer | 2019-12-25 03:48:11 +0100 | |
| commit | 825bcda767d2bab9f470d81cd76b9e5985fbea9c (patch) | |
| tree | d117fe3469822f4bac31725beec5793abf332c4a /node | |
| parent | adf9031cf7ddf06d8806a2b8e4494984a21608b5 (diff) | |
| download | OneRoll-825bcda767d2bab9f470d81cd76b9e5985fbea9c.tar.gz OneRoll-825bcda767d2bab9f470d81cd76b9e5985fbea9c.zip | |
Fix test of IF
Diffstat (limited to 'node')
| -rw-r--r-- | node/ifnode.cpp | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/node/ifnode.cpp b/node/ifnode.cpp index 43d055c..01b3f81 100644 --- a/node/ifnode.cpp +++ b/node/ifnode.cpp @@ -19,6 +19,7 @@ ***************************************************************************/ #include "ifnode.h" #include "result/diceresult.h" +#include "result/stringresult.h" PartialDiceRollNode::PartialDiceRollNode() : m_diceResult(new DiceResult) { @@ -117,9 +118,11 @@ void IfNode::run(ExecutionNode* previous) if(m_conditionType == OnEach) { - auto diceResult= new DiceResult; + auto resultOnEach= m_result; for(Die* dice : diceList) { + auto diceResult= new DiceResult; + StringResult* stringResult= nullptr; auto diceNode= new PartialDiceRollNode(); auto cpyDice= new Die(*dice); diceNode->insertDie(cpyDice); @@ -151,13 +154,34 @@ void IfNode::run(ExecutionNode* previous) { delete cpyDice; auto branchResult= previousLoop->getResult(); - auto val= branchResult->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); - auto valDie= new Die(); - valDie->insertRollValue(val); - diceResult->insertResult(valDie); + if(branchResult->hasResultOfType(Dice::RESULT_TYPE::SCALAR)) + { + auto val= branchResult->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); + auto valDie= new Die(); + valDie->insertRollValue(val); + diceResult->insertResult(valDie); + } + else if(branchResult->hasResultOfType(Dice::RESULT_TYPE::STRING)) + { + auto val= branchResult->getResult(Dice::RESULT_TYPE::STRING).toString(); + stringResult= new StringResult; + stringResult->setText(val); + } + } + if(nullptr != stringResult) + { + stringResult->setPrevious(resultOnEach); + resultOnEach= stringResult; + delete diceResult; + } + else + { + diceResult->setPrevious(resultOnEach); + resultOnEach= diceResult; } } - m_result= diceResult; + + m_result= resultOnEach; } else if((m_conditionType == OneOfThem) || (m_conditionType == AllOfThem)) { |