فهرست منبع

Bonus system: use updateBonuses in battleTurnPasseed

ArseniyShestakov 10 سال پیش
والد
کامیت
7f0b0bd1b5
1فایلهای تغییر یافته به همراه4 افزوده شده و 18 حذف شده
  1. 4 18
      lib/HeroBonus.cpp

+ 4 - 18
lib/HeroBonus.cpp

@@ -769,12 +769,9 @@ void CBonusSystemNode::updateBonuses(const CSelector &s)
 	exportedBonuses.getBonuses(bl, s);
 	for(Bonus *b : bl)
 	{
-		if(b->duration & Bonus::N_DAYS)
-		{
-			b->turnsRemain--;
-			if(b->turnsRemain <= 0)
-				removeBonus(b);
-		}
+		b->turnsRemain--;
+		if(b->turnsRemain <= 0)
+			removeBonus(b);
 	}
 
 	for(CBonusSystemNode *child : children)
@@ -968,18 +965,7 @@ void CBonusSystemNode::getRedDescendants(TNodes &out)
 
 void CBonusSystemNode::battleTurnPassed()
 {
-	BonusList bonusesCpy = exportedBonuses; //copy, because removing bonuses invalidates iters
-	for (auto & elem : bonusesCpy)
-	{
-		Bonus *b = elem;
-
-		if(b->duration & Bonus::N_TURNS)
-		{
-			b->turnsRemain--;
-			if(b->turnsRemain <= 0)
-				removeBonus(b);
-		}
-	}
+	updateBonuses(Bonus::NTurns);
 }
 
 void CBonusSystemNode::exportBonus(Bonus * b)