diff options
Diffstat (limited to 'src/libparser/node/rerolldicenode.h')
| -rw-r--r-- | src/libparser/node/rerolldicenode.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/libparser/node/rerolldicenode.h b/src/libparser/node/rerolldicenode.h new file mode 100644 index 0000000..68b732e --- /dev/null +++ b/src/libparser/node/rerolldicenode.h @@ -0,0 +1,72 @@ +#ifndef REROLLDICENODE_H +#define REROLLDICENODE_H + +#include "executionnode.h" +#include "result/diceresult.h" + +class ValidatorList; +/** + * @brief The RerollDiceNode class reroll dice given a condition and replace(or add) the result. + */ +class RerollDiceNode : public ExecutionNode +{ +public: + /** + * @brief The ReRollMode enum + */ + enum ReRollMode + { + EQUAL, + LESSER, + GREATER + }; + /** + * @brief RerollDiceNode + * @param reroll If true reroll the dice only once, otherwise until the condition is false + */ + RerollDiceNode(bool reroll, bool addingMode); + + /** + * @brief ~RerollDiceNode + */ + virtual ~RerollDiceNode(); + /** + * @brief run + * @param previous + */ + virtual void run(ExecutionNode* previous); + + /** + * @brief setValidator + */ + virtual void setValidatorList(ValidatorList*); + /** + * @brief toString + * @return + */ + virtual QString toString(bool) const; + /** + * @brief getPriority + * @return + */ + virtual qint64 getPriority() const; + + /** + * @brief getCopy + * @return + */ + virtual ExecutionNode* getCopy() const; + + ExecutionNode* getInstruction() const; + void setInstruction(ExecutionNode* instruction); + +private: + DiceResult* m_diceResult= nullptr; + ValidatorList* m_validatorList= nullptr; + ExecutionNode* m_instruction= nullptr; + + const bool m_reroll; + const bool m_adding; +}; + +#endif // REROLLDICENODE_H |