aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/booleancondition.cpp
diff options
context:
space:
mode:
authorobiwankennedy <renaud@rolisteam.org>2014-01-16 11:15:56 +0100
committerobiwankennedy <renaud@rolisteam.org>2014-01-16 11:15:56 +0100
commit7da7c4acb6fc1f031878ff52792f53a8d0d03d4c (patch)
tree4daa904bd0eab4a51d04bc335fbc044d69c2c87c /booleancondition.cpp
parentaed4c197ba1bcb0d0289a223095481650e705dba (diff)
downloadOneRoll-7da7c4acb6fc1f031878ff52792f53a8d0d03d4c.tar.gz
OneRoll-7da7c4acb6fc1f031878ff52792f53a8d0d03d4c.zip
Update booleancondition.cpp
hasValid API
Diffstat (limited to 'booleancondition.cpp')
-rw-r--r--booleancondition.cpp47
1 files changed, 34 insertions, 13 deletions
diff --git a/booleancondition.cpp b/booleancondition.cpp
index f2d39fa..a255d0a 100644
--- a/booleancondition.cpp
+++ b/booleancondition.cpp
@@ -4,24 +4,45 @@
BooleanCondition::BooleanCondition()
{
}
-bool BooleanCondition::isValid(Die* b) const
+qint64 BooleanCondition::hasValid(Die* b,bool recursive) const
{
- switch(m_operator)
+ QList<qint64> listValues;
+ if(recursive)
{
- case Equal:
- return (b->getLastRolledValue()==m_value);
- case GreaterThan:
- return (b->getLastRolledValue()>m_value);
- case LesserThan:
- return (b->getLastRolledValue()<m_value);
- case GreaterOrEqual:
- return (b->getLastRolledValue()>=m_value);
- case LesserOrEqual:
- return (b->getLastRolledValue()<=m_value);
+ listValues = b->getListValue();
+ }
+ else
+ {
+ listValues.append(b->getLastRolledValue());
+ }
+ qint64 sum= 0;
+ foreach(qint64 value, listValues)
+ {
+ switch(m_operator)
+ {
+ case Equal:
+ sum+=(value==m_value)?1:0;
+ break;
+ case GreaterThan:
+ sum+= (value>m_value)?1:0;
+ break;
+ case LesserThan:
+ sum+= (value<m_value)?1:0;
+ break;
+ case GreaterOrEqual:
+ sum+= (value>=m_value)?1:0;
+ break;
+ case LesserOrEqual:
+ sum+= (value<=m_value)?1:0;
+ break;
+
+
+ }
}
- return false;
+
+ return sum;
}
void BooleanCondition::setOperator(LogicOperator m)