aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2014-12-10 20:32:44 +0100
committerRenaud G <renaud@rolisteam.org>2014-12-10 20:32:44 +0100
commite8d25b4c659a1138bebe720da4fa5eef52761886 (patch)
tree04d316c573570077865dbf49cd51b6e3ef260556
parentf8d862bb3066774bb6c3c71f46954a3ef5f96d66 (diff)
downloadOneRoll-e8d25b4c659a1138bebe720da4fa5eef52761886.tar.gz
OneRoll-e8d25b4c659a1138bebe720da4fa5eef52761886.zip
-Allow the command help to work
-rw-r--r--diceparser.cpp59
1 files changed, 34 insertions, 25 deletions
diff --git a/diceparser.cpp b/diceparser.cpp
index 9f745f1..f4370f6 100644
--- a/diceparser.cpp
+++ b/diceparser.cpp
@@ -150,6 +150,7 @@ bool DiceParser::readExpression(QString& str,ExecutionNode* & node)
}
else if(readCommand(str,operandNode))
{
+ node = operandNode;
return true;
}
else
@@ -209,43 +210,50 @@ QString DiceParser::displayResult()
stream << totalValue.arg(myResult->getResult(Result::SCALAR).toReal()) << endl; //.arg(m_command)
scalarDone=true;
}
-
- DiceResult* myDiceResult = dynamic_cast<DiceResult*>(myResult);
- if(NULL!=myDiceResult)
+ else if(myResult->hasResultOfType(Result::DICE_LIST))
{
- QString resulStr;
- quint64 face=0;
- foreach(Die* die, myDiceResult->getResultList())
+ DiceResult* myDiceResult = dynamic_cast<DiceResult*>(myResult);
+ if(NULL!=myDiceResult)
{
- if(!die->hasBeenDisplayed())
+
+ QString resulStr;
+ quint64 face=0;
+ foreach(Die* die, myDiceResult->getResultList())
{
- resulStr+=QString("%1").arg(die->getValue());
- die->displayed();
- face = die->getFaces();
+ if(!die->hasBeenDisplayed())
+ {
+ resulStr+=QString("%1").arg(die->getValue());
+ die->displayed();
+ face = die->getFaces();
- if(die->hasChildrenValue())
- {
- resulStr+=" [";
- foreach(qint64 i, die->getListValue())
+ if(die->hasChildrenValue())
{
-
- resulStr+=QString("%1 ").arg(i);
+ resulStr+=" [";
+ foreach(qint64 i, die->getListValue())
+ {
+
+ resulStr+=QString("%1 ").arg(i);
+ }
+ resulStr.remove(resulStr.size()-1,1);
+ resulStr+="]";
}
- resulStr.remove(resulStr.size()-1,1);
- resulStr+="]";
+ resulStr+=", ";
}
- resulStr+=", ";
}
- }
- resulStr.remove(resulStr.size()-2,2);
+ resulStr.remove(resulStr.size()-2,2);
- if(!resulStr.isEmpty())
- {
- stream << dieValue.arg(face).arg(resulStr);
- }
+ if(!resulStr.isEmpty())
+ {
+ stream << dieValue.arg(face).arg(resulStr);
+ }
+ }
+ }
+ else if(myResult->hasResultOfType(Result::STRING))
+ {
+ stream << myResult->getResult(Result::STRING).toString();
}
myResult = myResult->getPrevious();
@@ -309,6 +317,7 @@ bool DiceParser::readCommand(QString& str,ExecutionNode* & node)
if(m_commandList->contains(str))
{
node = new HelpNode();
+ return true;
}
}