bool CGameInfoCallback::getTownInfo( const CGObjectInstance *town, InfoAboutTown &dest ) const { ERROR_RET_VAL_IF(!isVisible(town, player), "Town is not visible!", false); //it's not a town or it's not visible for layer bool detailed = hasAccess(town->tempOwner); //TODO vision support if(town->ID == Obj::TOWN) dest.initFromTown(static_cast<const CGTownInstance *>(town), detailed); else if(town->ID == Obj::GARRISON || town->ID == Obj::GARRISON2) dest.initFromArmy(static_cast<const CArmedInstance *>(town), detailed); else return false; return true; }
bool CGameInfoCallback::getTownInfo(const CGObjectInstance * town, InfoAboutTown & dest, const CGObjectInstance * selectedObject/* = nullptr*/) const { ERROR_RET_VAL_IF(!isVisible(town, player), "Town is not visible!", false); //it's not a town or it's not visible for layer bool detailed = hasAccess(town->tempOwner); if(town->ID == Obj::TOWN) { if(!detailed && nullptr != selectedObject) { const CGHeroInstance * selectedHero = dynamic_cast<const CGHeroInstance *>(selectedObject); if(nullptr != selectedHero) detailed = selectedHero->hasVisions(town, 1); } dest.initFromTown(static_cast<const CGTownInstance *>(town), detailed); } else if(town->ID == Obj::GARRISON || town->ID == Obj::GARRISON2) dest.initFromArmy(static_cast<const CArmedInstance *>(town), detailed); else return false; return true; }