diff options
| author | 2014-01-16 11:15:56 +0100 | |
|---|---|---|
| committer | 2014-01-16 11:15:56 +0100 | |
| commit | 7da7c4acb6fc1f031878ff52792f53a8d0d03d4c (patch) | |
| tree | 4daa904bd0eab4a51d04bc335fbc044d69c2c87c /booleancondition.cpp | |
| parent | aed4c197ba1bcb0d0289a223095481650e705dba (diff) | |
| download | OneRoll-7da7c4acb6fc1f031878ff52792f53a8d0d03d4c.tar.gz OneRoll-7da7c4acb6fc1f031878ff52792f53a8d0d03d4c.zip | |
Update booleancondition.cpp
hasValid API
Diffstat (limited to 'booleancondition.cpp')
| -rw-r--r-- | booleancondition.cpp | 47 |
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) |