diff options
| author | 2022-04-29 10:48:09 +0200 | |
|---|---|---|
| committer | 2022-04-29 10:48:09 +0200 | |
| commit | 07c5f6ec23fcf9237a24e71adcfacabce677f818 (patch) | |
| tree | 588e8c5f82b9163181fad3581f610e6f1d88cba4 /src/libparser/result/stringresult.cpp | |
| parent | a9153f1615a842cfb9e9bcda4d9071e202618569 (diff) | |
| download | OneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.tar.gz OneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.zip | |
Change file organization.
Diffstat (limited to 'src/libparser/result/stringresult.cpp')
| -rw-r--r-- | src/libparser/result/stringresult.cpp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/libparser/result/stringresult.cpp b/src/libparser/result/stringresult.cpp new file mode 100644 index 0000000..113c22c --- /dev/null +++ b/src/libparser/result/stringresult.cpp @@ -0,0 +1,117 @@ +#include "stringresult.h" +#include <QDebug> + +StringResult::StringResult() +{ + m_highlight= true; + m_resultTypes= static_cast<int>(Dice::RESULT_TYPE::STRING); +} +void StringResult::addText(QString text) +{ + m_value.append(text); +} +StringResult::~StringResult() {} +bool StringResult::hasResultOfType(Dice::RESULT_TYPE resultType) const +{ + bool val= false; + + switch(resultType) + { + 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 val; +} + +void StringResult::setNoComma(bool b) +{ + m_commaSeparator= !b; +} + +QString StringResult::getText() const +{ + return m_commaSeparator ? m_value.join(",") : m_value.join(QString()); +} + +QVariant StringResult::getResult(Dice::RESULT_TYPE type) +{ + switch(type) + { + case Dice::RESULT_TYPE::STRING: + return getText(); + case Dice::RESULT_TYPE::SCALAR: + return getScalarResult(); + default: + return QVariant(); + } +} +QString StringResult::toString(bool wl) +{ + if(wl) + { + return QString("%2 [label=\"StringResult_value_%1\"]").arg(getText().replace("%", "_"), m_id); + } + else + { + return m_id; + } +} +void StringResult::setHighLight(bool b) +{ + m_highlight= b; +} + +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); + std::for_each(m_value.begin(), m_value.end(), [copy](const QString& str) { copy->addText(str); }); + return copy; +} + +QString StringResult::getStringResult() const +{ + return getText(); +} |