1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-25 21:38:59 +02:00

Fixed bug #71. Little redesign of town buildings handling.

This commit is contained in:
DjWarmonger 2009-10-04 14:20:19 +00:00
parent 0fabf5f31d
commit 9792c64cbf
3 changed files with 13 additions and 4 deletions

View File

@ -1561,9 +1561,8 @@ void CGTownInstance::onHeroVisit(const CGHeroInstance * h) const
cb->setOwner(id, h->tempOwner);
}
}
cb->heroVisitCastle(id, h->id);
for (std::vector<CGTownBuilding*>::const_iterator i = bonusingBuildings.begin(); i != bonusingBuildings.end(); i++)
(*i)->onHeroVisit (h); //put it inside heroVisitCastle call, make sure *visitingHero is set
}
void CGTownInstance::onHeroLeave(const CGHeroInstance * h) const

View File

@ -1624,7 +1624,15 @@ void CGameHandler::heroVisitCastle(int obj, int heroID)
vc.tid = obj;
vc.flags |= 1;
sendAndApply(&vc);
giveSpells(getTown(obj),getHero(heroID));
vistiCastleObjects (getTown(obj), getHero(heroID));
giveSpells (getTown(obj), getHero(heroID));
}
void CGameHandler::vistiCastleObjects (const CGTownInstance *t, const CGHeroInstance *h)
{
std::vector<CGTownBuilding*>::const_iterator i;
for (i = t->bonusingBuildings.begin(); i != t->bonusingBuildings.end(); i++)
(*i)->onHeroVisit (h);
}
void CGameHandler::stopHeroVisitCastle(int obj, int heroID)
@ -2414,7 +2422,8 @@ bool CGameHandler::hireHero( ui32 tid, ui8 hid )
sr.val = gs->getPlayer(t->tempOwner)->resources[6] - 2500;
sendAndApply(&sr);
giveSpells(t,nh);
vistiCastleObjects (t, nh);
giveSpells (t,nh);
return true;
}

View File

@ -123,6 +123,7 @@ public:
void giveCreatures (int objid, const CGHeroInstance * h, CCreatureSet creatures);
void showCompInfo(ShowInInfobox * comp);
void heroVisitCastle(int obj, int heroID);
void vistiCastleObjects (const CGTownInstance *t, const CGHeroInstance *h);
void stopHeroVisitCastle(int obj, int heroID);
void giveHeroArtifact(int artid, int hid, int position); //pos==-1 - first free slot in backpack; pos==-2 - default if available or backpack
void moveArtifact(int hid, int oldPosition, int destPos);