diff options
| author | 2016-02-04 17:57:27 +0100 | |
|---|---|---|
| committer | 2016-02-04 17:57:27 +0100 | |
| commit | c796cef9dbbf48dcaf21dc4f4ea62db2ba4fe629 (patch) | |
| tree | 2fb48b9a958d8e8ce22dd648ac9df1cf4d2c8c7e /node | |
| parent | e7e79a8a74657ca6f8488a7cd3742bb2af734b0a (diff) | |
| download | OneRoll-c796cef9dbbf48dcaf21dc4f4ea62db2ba4fe629.tar.gz OneRoll-c796cef9dbbf48dcaf21dc4f4ea62db2ba4fe629.zip | |
Add node for painting dice and new class for result.
Diffstat (limited to 'node')
| -rw-r--r-- | node/paintnode.cpp | 119 | ||||
| -rw-r--r-- | node/paintnode.h | 57 |
2 files changed, 176 insertions, 0 deletions
diff --git a/node/paintnode.cpp b/node/paintnode.cpp new file mode 100644 index 0000000..19eeb7f --- /dev/null +++ b/node/paintnode.cpp @@ -0,0 +1,119 @@ +/*************************************************************************** + * Copyright (C) 2015 by Renaud Guezennec * + * http:://www.rolisteam.org/contact * + * * + * rolisteam is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include "paintnode.h" + +ColorItem::ColorItem(QString str, int val) + : m_colorNumber(val),m_color(str) +{ + +} + +int ColorItem::colorNumber() const +{ + return m_colorNumber; +} + +void ColorItem::setColorNumber(int colorNumber) +{ + m_colorNumber = colorNumber; +} + +QString ColorItem::color() const +{ + return m_color; +} + +void ColorItem::setColor(const QString &color) +{ + m_color = color; +} + + +/////////////////////////////////// +/// @brief PainterNode::PainterNode +/////////////////////////////////// + +PainterNode::PainterNode() +{ + +} + + +PainterNode::~PainterNode() +{ + +} + + +void PainterNode::run(ExecutionNode *previous) +{ + m_previousNode = previous; + if(NULL==previous) + { + return; + } + Result* previousResult = previous->getResult(); + m_result = previousResult; + DiceResult* previousDiceResult = dynamic_cast<DiceResult*>(previousResult); + if(NULL!=previousDiceResult) + { + QList<Die*> diceList=previousDiceResult->getResultList(); + foreach(ColorItem item, m_colors) + { + int current=item.colorNumber(); + QList<Die*>::iterator it; + for(it = diceList.begin(); it != diceList.end() && current>0 ; ++it) + { + (*it)->setColor(item.color()); + --current; + } + } + } + if(NULL!=m_nextNode) + { + m_nextNode->run(this); + } +} + + +QString PainterNode::toString(bool wl) const +{ + if(wl) + { + return QString("%1 [label=\"PainterNode\"]").arg(m_id); + } + else + { + return m_id; + } +} + + +qint64 PainterNode::getPriority() const +{ + return 4; +} + + +void PainterNode::insertColorItem(QString color, int value) +{ + ColorItem item(color,value); + m_colors.append(item); +} diff --git a/node/paintnode.h b/node/paintnode.h new file mode 100644 index 0000000..e01eaee --- /dev/null +++ b/node/paintnode.h @@ -0,0 +1,57 @@ +/*************************************************************************** + * Copyright (C) 2015 by Renaud Guezennec * + * http:://www.rolisteam.org/contact * + * * + * rolisteam is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef PAINTERNODE_H +#define PAINTERNODE_H + +#include "executionnode.h" +#include "result/diceresult.h" +#include <QString> + + +class ColorItem +{ + +public: + ColorItem(QString str,int val); + int colorNumber() const; + void setColorNumber(int colorNumber); + + QString color() const; + void setColor(const QString &color); + +private: + int m_colorNumber; + QString m_color; +}; + +class PainterNode : public ExecutionNode +{ +public: + PainterNode(); + virtual ~PainterNode(); + virtual void run(ExecutionNode* previous = NULL); + virtual QString toString(bool )const; + virtual qint64 getPriority() const; + void insertColorItem(QString color, int value); +protected: + QList<ColorItem> m_colors; +}; + +#endif |