diff options
| author | 2015-08-20 00:31:09 +0200 | |
|---|---|---|
| committer | 2015-08-20 00:31:09 +0200 | |
| commit | bb413e7eab871cbc377eea0ece5444d1c758481b (patch) | |
| tree | 865b763a4b3c679fffcf7e8c7886f95d2a8b4cdd | |
| parent | 46568cbccfd0c60dc19cc27265afc983d71b4c58 (diff) | |
| download | OneRoll-bb413e7eab871cbc377eea0ece5444d1c758481b.tar.gz OneRoll-bb413e7eab871cbc377eea0ece5444d1c758481b.zip | |
first implementation of compositevalidator.
| -rw-r--r-- | compositevalidator.cpp | 109 | ||||
| -rw-r--r-- | compositevalidator.h | 13 |
2 files changed, 46 insertions, 76 deletions
diff --git a/compositevalidator.cpp b/compositevalidator.cpp index 0715ba2..cc52fdd 100644 --- a/compositevalidator.cpp +++ b/compositevalidator.cpp @@ -22,7 +22,7 @@ #include "compositevalidator.h" -CompositeValidator::BooleanCondition() +CompositeValidator::CompositeValidator() { } qint64 CompositeValidator::hasValid(Die* b,bool recursive,bool unhighlight) const @@ -30,7 +30,7 @@ qint64 CompositeValidator::hasValid(Die* b,bool recursive,bool unhighlight) cons int i = 0; qint64 sum = 0; - foreach(Validator* validator, m_validatorList) + foreach(const Validator* validator, *m_validatorList) { qint64 val = validator->hasValid(b,recursive,unhighlight); if(i==0) @@ -39,7 +39,7 @@ qint64 CompositeValidator::hasValid(Die* b,bool recursive,bool unhighlight) cons } else { - switch(m_operators[i-1]) + switch(m_operators->at(i-1)) { case OR: sum |= val; @@ -55,63 +55,13 @@ qint64 CompositeValidator::hasValid(Die* b,bool recursive,bool unhighlight) cons ++i; } - /*QList<qint64> listValues; - if(recursive) - { - 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; - } - } - if((unhighlight)&&(sum==0)) - { - b->setHighlighted(false); - } - else - { - b->setHighlighted(true); - } - - return sum;*/ + return sum; } -void CompositeValidator::setOperator(LogicOperator m) -{ - m_operator = m; -} - -void CompositeValidator::setValue(qint64 v) -{ - m_value=v; -} QString CompositeValidator::toString() { QString str=""; - switch (m_operator) + /*switch (m_operator) { case Equal: str.append("="); @@ -129,21 +79,40 @@ QString CompositeValidator::toString() str.append("<="); break; } - return QString("[%1%2]").arg(str).arg(m_value); + return QString("[%1%2]").arg(str).arg(m_value);*/ + return str; } -quint8 CompositeValidator::getValidRangeSize(quint64 faces) const +quint64 CompositeValidator::getValidRangeSize(quint64 faces) const { - switch (m_operator) - { - case Equal: - return 1; - case GreaterThan: - return faces-m_value; - case LesserThan: - return m_value-1; - case GreaterOrEqual: - return faces-(m_value-1); - case LesserOrEqual: - return m_value; - } + quint64 sum =0; + int i = -1; + foreach(Validator* tmp,*m_validatorList) + { + quint64 rel = tmp->getValidRangeSize(faces); + LogicOperation opt; + if(i>=0) + { + opt = m_operators->at(i); + } + if(opt == OR) + { + sum += rel; + } + else if((opt == AND)&&(opt == EXCLUSIVE_OR)) + { + sum = qMax(rel,sum); + } + ++i; + } + + return sum; +} +void CompositeValidator::setOperationList(QVector<LogicOperation>* m) +{ + m_operators = m; +} + +void CompositeValidator::setValidatorList(QList<Validator*>* m) +{ + m_validatorList = m; } diff --git a/compositevalidator.h b/compositevalidator.h index b207db9..789f33f 100644 --- a/compositevalidator.h +++ b/compositevalidator.h @@ -24,6 +24,7 @@ #include <QString> #include <QVector> +#include <QList> #include <Qt> #include "validator.h" @@ -39,16 +40,16 @@ public: virtual qint64 hasValid(Die* b,bool recursive, bool unhighlight = false) const; - void addOperation(LogicOperation m); - void setValue(qint64); + void setOperationList(QVector<LogicOperation>* m); + void setValidatorList(QList<Validator*>*); + QString toString(); - virtual quint8 getValidRangeSize(quint64 faces) const; + virtual quint64 getValidRangeSize(quint64 faces) const; private: - QVector<LogicOperation> m_operators; - qint64 m_value; - QList<Validator*> m_validatorList; + QVector<LogicOperation>* m_operators; + QList<Validator*>* m_validatorList; }; #endif // BOOLEANCONDITION_H |