From 653ba9395a36cc20ec1d68c9a9cae78973fa334c Mon Sep 17 00:00:00 2001 From: Renaud G Date: Thu, 30 Jan 2020 01:27:15 +0100 Subject: add unicity and repeat function part2 --- node/filternode.cpp | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'node/filternode.cpp') diff --git a/node/filternode.cpp b/node/filternode.cpp index d5d155a..4424b4b 100644 --- a/node/filternode.cpp +++ b/node/filternode.cpp @@ -1,4 +1,5 @@ #include "filternode.h" +#include "validatorlist.h" FilterNode::FilterNode() : m_diceResult(new DiceResult()), m_eachValue(false) { @@ -7,14 +8,14 @@ FilterNode::FilterNode() : m_diceResult(new DiceResult()), m_eachValue(false) FilterNode::~FilterNode() { - if(nullptr != m_validator) + if(nullptr != m_validatorList) { - delete m_validator; + delete m_validatorList; } } -void FilterNode::setValidator(Validator* validator) +void FilterNode::setValidatorList(ValidatorList* validatorlist) { - m_validator= validator; + m_validatorList= validatorlist; } void FilterNode::run(ExecutionNode* previous) { @@ -25,24 +26,27 @@ void FilterNode::run(ExecutionNode* previous) } DiceResult* previousDiceResult= dynamic_cast(previous->getResult()); m_result->setPrevious(previousDiceResult); + if(nullptr != previousDiceResult) { - QList diceList= previousDiceResult->getResultList(); QList diceList2; + std::function f= [&diceList2](Die* die, qint64) { + if(die == nullptr) + return; + Die* tmpdie= new Die(*die); + diceList2.append(tmpdie); + die->displayed(); + }; + m_validatorList->validResult(previousDiceResult, true, true, f); + + QList diceList= previousDiceResult->getResultList(); + diceList.erase(std::remove_if(diceList.begin(), diceList.end(), + [&diceList2](Die* die) { return diceList2.contains(die); }), + diceList.end()); for(Die* tmp : diceList) { - if(m_validator->hasValid(tmp, m_eachValue)) - { - Die* tmpdie= new Die(*tmp); - //*tmpdie= *tmp; - diceList2.append(tmpdie); - tmp->displayed(); - } - else - { - tmp->setHighlighted(false); - } + tmp->setHighlighted(false); } m_diceResult->setResultList(diceList2); @@ -77,9 +81,9 @@ qint64 FilterNode::getPriority() const ExecutionNode* FilterNode::getCopy() const { FilterNode* node= new FilterNode(); - if(nullptr != m_validator) + if(nullptr != m_validatorList) { - node->setValidator(m_validator->getCopy()); + node->setValidatorList(m_validatorList->getCopy()); } if(nullptr != m_nextNode) { -- cgit v1.2.3-70-g09d2