aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser/node/dicerollernode.h
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2022-04-29 10:48:09 +0200
committerRenaud G <renaud@rolisteam.org>2022-04-29 10:48:09 +0200
commit07c5f6ec23fcf9237a24e71adcfacabce677f818 (patch)
tree588e8c5f82b9163181fad3581f610e6f1d88cba4 /src/libparser/node/dicerollernode.h
parenta9153f1615a842cfb9e9bcda4d9071e202618569 (diff)
downloadOneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.tar.gz
OneRoll-07c5f6ec23fcf9237a24e71adcfacabce677f818.zip
Change file organization.
Diffstat (limited to 'src/libparser/node/dicerollernode.h')
-rw-r--r--src/libparser/node/dicerollernode.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/libparser/node/dicerollernode.h b/src/libparser/node/dicerollernode.h
new file mode 100644
index 0000000..52178cb
--- /dev/null
+++ b/src/libparser/node/dicerollernode.h
@@ -0,0 +1,63 @@
+#ifndef DICEROLLERNODE_H
+#define DICEROLLERNODE_H
+
+#include <Qt>
+
+#include "executionnode.h"
+#include "result/diceresult.h"
+#include <utility>
+/**
+ * @brief The DiceRollerNode class rolls dice of one kind.
+ */
+class DiceRollerNode : public ExecutionNode
+{
+public:
+ /**
+ * @brief DiceRollerNode builds an instance
+ * @param faces, number of faces of dices
+ * @param offset, first value of dice.
+ */
+ DiceRollerNode(qint64 max, qint64 min= 1);
+
+ /**
+ * @brief run - starts to roll dice.
+ */
+ virtual void run(ExecutionNode*);
+ /**
+ * @brief getFaces accessor
+ * @return the face count
+ */
+ quint64 getFaces() const;
+ std::pair<qint64, qint64> getRange() const;
+
+ /**
+ * @brief toString
+ * @param wl
+ * @return use to generate dot tree;
+ */
+ virtual QString toString(bool wl) const;
+ /**
+ * @brief getPriority
+ * @return priority for dice roll: 4 (higher)
+ */
+ virtual qint64 getPriority() const;
+
+ virtual ExecutionNode* getCopy() const;
+
+ // private members
+ Dice::ArithmeticOperator getOperator() const;
+ void setOperator(const Dice::ArithmeticOperator& dieOperator);
+
+ bool getUnique() const;
+ void setUnique(bool unique);
+
+private:
+ quint64 m_diceCount;
+ qint64 m_max; /// faces
+ DiceResult* m_diceResult{nullptr};
+ qint64 m_min;
+ Dice::ArithmeticOperator m_operator;
+ bool m_unique{false};
+};
+
+#endif // DICEROLLERNODE_H