aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/result
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2020-04-01 00:48:15 +0200
committerRenaud G <renaud@rolisteam.org>2020-04-01 00:48:15 +0200
commit4418146f8553c670be2548ad4e5c1d024e91e2ad (patch)
tree89807162cc56575f8560655da8e614995dc39417 /result
parent14b2b264097cebb05237164f7320ad4b4fbbfba0 (diff)
downloadOneRoll-4418146f8553c670be2548ad4e5c1d024e91e2ad.tar.gz
OneRoll-4418146f8553c670be2548ad4e5c1d024e91e2ad.zip
New Api for string result subclass dice result.
Diffstat (limited to 'result')
-rw-r--r--result/diceresult.h26
-rw-r--r--result/stringresult.cpp62
-rw-r--r--result/stringresult.h39
3 files changed, 76 insertions, 51 deletions
diff --git a/result/diceresult.h b/result/diceresult.h
index 8f30340..0ee622c 100644
--- a/result/diceresult.h
+++ b/result/diceresult.h
@@ -39,58 +39,58 @@ public:
/**
* @brief ~DiceResult
*/
- virtual ~DiceResult();
+ virtual ~DiceResult() override;
/**
* @brief getResultList
* @return
*/
- QList<Die*>& getResultList();
+ virtual QList<Die*>& getResultList();
/**
* @brief insertResult
*/
- void insertResult(Die*);
+ virtual void insertResult(Die*);
/**
* @brief setResultList
* @param list
*/
- void setResultList(QList<Die*> list);
+ virtual void setResultList(QList<Die*> list);
/**
* @brief getScalar
* @return
*/
- virtual QVariant getResult(Dice::RESULT_TYPE);
+ virtual QVariant getResult(Dice::RESULT_TYPE) override;
/**
* @brief toString
* @return
*/
- virtual QString toString(bool wl);
+ virtual QString toString(bool wl) override;
/**
* @brief isHomogeneous
*/
- bool isHomogeneous() const;
+ virtual bool isHomogeneous() const;
/**
* @brief setHomogeneous
*/
- void setHomogeneous(bool);
+ virtual void setHomogeneous(bool);
Die::ArithmeticOperator getOperator() const;
void setOperator(const Die::ArithmeticOperator& dieOperator);
bool contains(Die* die, const std::function<bool(const Die*, const Die*)> equal);
- void clear();
+ void clear() override;
- virtual Result* getCopy() const;
+ virtual Result* getCopy() const override;
-private:
+protected:
qreal getScalarResult();
-private:
+protected:
QList<Die*> m_diceValues;
bool m_homogeneous;
- Die::ArithmeticOperator m_operator;
+ Die::ArithmeticOperator m_operator= Die::ArithmeticOperator::PLUS;
};
Q_DECLARE_METATYPE(QList<Die*>)
#endif // DICERESULT_H
diff --git a/result/stringresult.cpp b/result/stringresult.cpp
index b5c490c..201d1f3 100644
--- a/result/stringresult.cpp
+++ b/result/stringresult.cpp
@@ -1,33 +1,39 @@
#include "stringresult.h"
+#include <QDebug>
StringResult::StringResult()
{
m_highlight= true;
m_resultTypes= static_cast<int>(Dice::RESULT_TYPE::STRING);
}
-void StringResult::setText(QString text)
+void StringResult::addText(QString text)
{
- m_value= text;
+ m_value.append(text);
}
StringResult::~StringResult() {}
bool StringResult::hasResultOfType(Dice::RESULT_TYPE resultType) const
{
+ bool val= false;
- if(resultType == Dice::RESULT_TYPE::STRING)
+ switch(resultType)
{
- return true;
- }
- else if(resultType == Dice::RESULT_TYPE::SCALAR)
- {
- bool ok= false;
- getText().toInt(&ok);
- return ok;
+ case Dice::RESULT_TYPE::STRING:
+ val= !isDigitOnly();
+ break;
+ case Dice::RESULT_TYPE::SCALAR:
+ val= isDigitOnly();
+ break;
+ case Dice::RESULT_TYPE::DICE_LIST:
+ val= (isDigitOnly() && m_value.size() > 1);
+ break;
+ default:
+ break;
}
- return false;
+ return val;
}
QString StringResult::getText() const
{
- return m_value;
+ return m_value.join(",");
}
QVariant StringResult::getResult(Dice::RESULT_TYPE type)
{
@@ -36,7 +42,7 @@ QVariant StringResult::getResult(Dice::RESULT_TYPE type)
case Dice::RESULT_TYPE::STRING:
return getText();
case Dice::RESULT_TYPE::SCALAR:
- return getText().toInt();
+ return getScalarResult();
default:
return QVariant();
}
@@ -61,11 +67,39 @@ bool StringResult::hasHighLight() const
{
return m_highlight;
}
+
+void StringResult::finished()
+{
+ if(isDigitOnly())
+ {
+ std::for_each(m_value.begin(), m_value.end(), [this](const QString& str) {
+ auto die= new Die();
+ die->setMaxValue(m_stringCount);
+ die->setValue(str.toInt());
+ insertResult(die);
+ });
+ }
+}
+
+void StringResult::setStringCount(int count)
+{
+ m_stringCount= count;
+}
+
+bool StringResult::isDigitOnly() const
+{
+ return std::all_of(m_value.begin(), m_value.end(), [](const QString& str) {
+ bool ok= false;
+ str.toInt(&ok);
+ return ok;
+ });
+}
+
Result* StringResult::getCopy() const
{
auto copy= new StringResult();
copy->setPrevious(getPrevious());
copy->setHighLight(m_highlight);
- copy->setText(m_value);
+ std::for_each(m_value.begin(), m_value.end(), [copy](const QString& str) { copy->addText(str); });
return copy;
}
diff --git a/result/stringresult.h b/result/stringresult.h
index 0e469fe..f1029c7 100644
--- a/result/stringresult.h
+++ b/result/stringresult.h
@@ -1,12 +1,13 @@
#ifndef STRINGRESULT_H
#define STRINGRESULT_H
-#include "result.h"
+#include "diceresult.h"
#include <QString>
/**
* @brief The StringResult class stores command result for String.
*/
-class StringResult : public Result
+
+class StringResult : public DiceResult
{
public:
/**
@@ -16,36 +17,26 @@ public:
/**
* @brief StringResult
*/
- virtual ~StringResult();
- /**
- * @brief setText
- * @param text
- */
- void setText(QString text);
- /**
- * @brief getText
- * @return
- */
+ virtual ~StringResult() override;
+ void addText(QString text);
+ void finished();
QString getText() const;
- /**
- * @brief getScalar
- * @return
- */
- virtual QVariant getResult(Dice::RESULT_TYPE);
- /**
- * @brief toString
- * @return
- */
+ virtual QVariant getResult(Dice::RESULT_TYPE) override;
virtual QString toString(bool);
virtual void setHighLight(bool);
virtual bool hasHighLight() const;
- virtual bool hasResultOfType(Dice::RESULT_TYPE resultType) const;
- virtual Result* getCopy() const;
+ virtual bool hasResultOfType(Dice::RESULT_TYPE resultType) const override;
+ virtual Result* getCopy() const override;
+
+ bool isDigitOnly() const;
+
+ void setStringCount(int count);
private:
- QString m_value;
+ QStringList m_value;
bool m_highlight;
+ int m_stringCount= 0;
};
#endif // STRINGRESULT_H