Browse Source

cleanup of CBonusSystemNode::removeBonusesRecursive

Henning Koehler 7 years ago
parent
commit
e455d97fc7
2 changed files with 7 additions and 11 deletions
  1. 5 9
      lib/HeroBonus.cpp
  2. 2 2
      lib/HeroBonus.h

+ 5 - 9
lib/HeroBonus.cpp

@@ -791,14 +791,10 @@ void CBonusSystemNode::detachFrom(CBonusSystemNode *parent)
 	CBonusSystemNode::treeHasChanged();
 }
 
-void CBonusSystemNode::removeBonusesRecursive(const CSelector &s)
+void CBonusSystemNode::removeBonusesRecursive(const CSelector & s)
 {
-	BonusList bl;
-	exportedBonuses.getBonuses(bl, s, Selector::all);
-	for(auto b : bl)
-		removeBonus(b);
-
-	for(CBonusSystemNode *child : children)
+	removeBonuses(s);
+	for(CBonusSystemNode * child : children)
 		child->removeBonusesRecursive(s);
 }
 
@@ -850,10 +846,10 @@ void CBonusSystemNode::removeBonus(const std::shared_ptr<Bonus>& b)
 	CBonusSystemNode::treeHasChanged();
 }
 
-void CBonusSystemNode::removeBonuses(const CSelector &selector)
+void CBonusSystemNode::removeBonuses(const CSelector & selector)
 {
 	BonusList toRemove;
-	exportedBonuses.getBonuses(toRemove, selector);
+	exportedBonuses.getBonuses(toRemove, selector, Selector::all);
 	for(auto bonus : toRemove)
 		removeBonus(bonus);
 }

+ 2 - 2
lib/HeroBonus.h

@@ -709,8 +709,8 @@ public:
 	void propagateBonus(std::shared_ptr<Bonus> b);
 	void unpropagateBonus(std::shared_ptr<Bonus> b);
 	void removeBonus(const std::shared_ptr<Bonus>& b);
-	void removeBonuses(const CSelector &selector);
-	void removeBonusesRecursive(const CSelector &s);
+	void removeBonuses(const CSelector & selector);
+	void removeBonusesRecursive(const CSelector & s);
 	void newRedDescendant(CBonusSystemNode *descendant); //propagation needed
 	void removedRedDescendant(CBonusSystemNode *descendant); //de-propagation needed