1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00
This commit is contained in:
Michał W. Urbańczyk
2011-03-01 10:19:05 +00:00
parent 207e573001
commit c5930893fd
3 changed files with 14 additions and 3 deletions

View File

@@ -1242,6 +1242,7 @@ void BattleInfo::localInit()
BOOST_FOREACH(CStack *s, stacks)
{
s->exportBonuses();
if(s->base) //stack originating from "real" stack in garrison -> attach to it
{
s->attachTo(const_cast<CStackInstance*>(s->base));
@@ -1255,6 +1256,8 @@ void BattleInfo::localInit()
}
s->postInit();
}
exportBonuses();
}
namespace CGH

View File

@@ -517,8 +517,8 @@ std::string CBonusSystemNode::nodeName() const
void CBonusSystemNode::deserializationFix()
{
BOOST_FOREACH(Bonus *b, exportedBonuses)
exportBonus(b);
exportBonuses();
}
void CBonusSystemNode::getRedParents(TNodes &out)
@@ -615,6 +615,12 @@ void CBonusSystemNode::exportBonus(Bonus * b)
bonuses.push_back(b);
}
void CBonusSystemNode::exportBonuses()
{
BOOST_FOREACH(Bonus *b, exportedBonuses)
exportBonus(b);
}
int NBonus::valOf(const CBonusSystemNode *obj, Bonus::BonusType type, int subtype /*= -1*/)
{
if(obj)

View File

@@ -450,17 +450,19 @@ public:
void removeBonus(Bonus *b);
void newRedDescendant(CBonusSystemNode *descendant); //propagation needed
void removedRedDescendant(CBonusSystemNode *descendant); //de-propagation needed
void battleTurnPassed(); //updates count of remaining turns and removed outdated bonuses
bool isIndependentNode() const; //node is independent when it has no parents nor children
bool actsAsBonusSourceOnly() const;
bool isLimitedOnUs(Bonus *b) const; //if bonus should be removed from list acquired from this node
void battleTurnPassed(); //updates count of remaining turns and removed outdated bonuses
void popBonuses(const CSelector &s);
virtual std::string bonusToString(Bonus *bonus, bool description) const {return "";}; //description or bonus name
virtual std::string nodeName() const;
void deserializationFix();
void exportBonus(Bonus * b);
void exportBonuses();
template <typename Handler> void serialize(Handler &h, const int version)
{