aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/die.cpp
diff options
context:
space:
mode:
authorrguezennec <renaud@rolisteam.org>2017-04-27 18:17:03 +0200
committerrguezennec <renaud@rolisteam.org>2017-04-27 18:17:03 +0200
commit9b2839b6f09177bda6b3654c56a750f84173123a (patch)
tree259cbab92ad580b11ddd4a01bd8fa53b151a237c /die.cpp
parent026ca5cb4829cd4c4ad6b945e27479303e96fe82 (diff)
downloadOneRoll-9b2839b6f09177bda6b3654c56a750f84173123a.tar.gz
OneRoll-9b2839b6f09177bda6b3654c56a750f84173123a.zip
-management of arithmetic operator for scalar result of dice.
Diffstat (limited to 'die.cpp')
-rw-r--r--die.cpp46
1 files changed, 43 insertions, 3 deletions
diff --git a/die.cpp b/die.cpp
index 87fdd3c..8809a97 100644
--- a/die.cpp
+++ b/die.cpp
@@ -27,7 +27,7 @@
#include <chrono>
Die::Die()
- : m_hasValue(false),m_displayStatus(false),m_highlighted(true),m_base(1),m_color("")//,m_mt(m_randomDevice)
+ : m_hasValue(false),m_displayStatus(false),m_highlighted(true),m_base(1),m_color(""),m_op(Die::PLUS)//,m_mt(m_randomDevice)
{
// uint seed = quintptr(this) + QDateTime::currentDateTime().toMSecsSinceEpoch();
@@ -48,6 +48,7 @@ Die::Die(const Die& die)
m_highlighted = die.m_highlighted;
m_base = die.m_base;
m_color = die.getColor();
+ m_op = die.getOp();
}
void Die::setValue(qint64 r)
@@ -80,9 +81,39 @@ qint64 Die::getValue() const
else
{
qint64 value=0;
- foreach(qint64 tmp,m_rollResult)
+ int i = 0;
+ for(qint64 tmp : m_rollResult)
{
- value+=tmp;
+ if(i>0)
+ {
+ switch(m_op)
+ {
+ case PLUS:
+ value+=tmp;
+ break;
+ case MULTIPLICATION:
+ value*=tmp;
+ break;
+ case MINUS:
+ value-=tmp;
+ break;
+ case DIVIDE:
+ if(tmp!=0)
+ {
+ value/=tmp;
+ }
+ else
+ {
+ //error();
+ }
+ break;
+ }
+ }
+ else
+ {
+ value=tmp;
+ }
+ ++i;
}
return value;
}
@@ -179,3 +210,12 @@ void Die::setMaxValue(const qint64 &maxValue)
m_maxValue = maxValue;
}
+Die::ArithmeticOperator Die::getOp() const
+{
+ return m_op;
+}
+
+void Die::setOp(const Die::ArithmeticOperator &op)
+{
+ m_op = op;
+}