1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +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->setOwner(id, h->tempOwner);
} }
} }
cb->heroVisitCastle(id, h->id); 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 void CGTownInstance::onHeroLeave(const CGHeroInstance * h) const

View File

@@ -1624,7 +1624,15 @@ void CGameHandler::heroVisitCastle(int obj, int heroID)
vc.tid = obj; vc.tid = obj;
vc.flags |= 1; vc.flags |= 1;
sendAndApply(&vc); 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) 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; sr.val = gs->getPlayer(t->tempOwner)->resources[6] - 2500;
sendAndApply(&sr); sendAndApply(&sr);
giveSpells(t,nh); vistiCastleObjects (t, nh);
giveSpells (t,nh);
return true; return true;
} }

View File

@@ -123,6 +123,7 @@ public:
void giveCreatures (int objid, const CGHeroInstance * h, CCreatureSet creatures); void giveCreatures (int objid, const CGHeroInstance * h, CCreatureSet creatures);
void showCompInfo(ShowInInfobox * comp); void showCompInfo(ShowInInfobox * comp);
void heroVisitCastle(int obj, int heroID); void heroVisitCastle(int obj, int heroID);
void vistiCastleObjects (const CGTownInstance *t, const CGHeroInstance *h);
void stopHeroVisitCastle(int obj, int heroID); 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 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); void moveArtifact(int hid, int oldPosition, int destPos);