From 9b2839b6f09177bda6b3654c56a750f84173123a Mon Sep 17 00:00:00 2001 From: rguezennec Date: Thu, 27 Apr 2017 18:17:03 +0200 Subject: -management of arithmetic operator for scalar result of dice. --- die.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) (limited to 'die.cpp') diff --git a/die.cpp b/die.cpp index 87fdd3c..8809a97 100644 --- a/die.cpp +++ b/die.cpp @@ -27,7 +27,7 @@ #include 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; +} -- cgit v1.2.3-70-g09d2