CvPlayer::IsBuildBlockedByFeature(BuildTypes, FeatureTypes) const
- Defined in
- CvPlayer.cpp, line 9473
- Class
- CvPlayer
- Hook name
CivHooks::CvPlayer_IsBuildBlockedByFeature
Hooks
static bool BeforeCvPlayer_IsBuildBlockedByFeature(const CvPlayer* self, BuildTypes eBuild, FeatureTypes eFeature, bool& result);static void AfterCvPlayer_IsBuildBlockedByFeature(const CvPlayer* self, BuildTypes eBuild, FeatureTypes eFeature, bool& result);static bool ReplaceCvPlayer_IsBuildBlockedByFeature(bool (*original)(const CvPlayer*, BuildTypes, FeatureTypes), const CvPlayer* self, BuildTypes eBuild, FeatureTypes eFeature);CivRegisterBefore<CivHooks::CvPlayer_IsBuildBlockedByFeature>(host, &BeforeCvPlayer_IsBuildBlockedByFeature);CivRegisterAfter<CivHooks::CvPlayer_IsBuildBlockedByFeature>(host, &AfterCvPlayer_IsBuildBlockedByFeature);CivRegisterReplace<CivHooks::CvPlayer_IsBuildBlockedByFeature>(host, &ReplaceCvPlayer_IsBuildBlockedByFeature);
Code
9472/// Are we prevented from eBuild-ing because of a Feature on this plot?9473bool CvPlayer::IsBuildBlockedByFeature(BuildTypes eBuild, FeatureTypes eFeature) const9474{9475 // No Feature here to block us9476 if(eFeature == NO_FEATURE)9477 {9478 return false;9479 }94809481 // Build does not remove the Feature on pPlot9482 if(!GC.getBuildInfo(eBuild)->isFeatureRemove(eFeature))9483 {9484 return false;9485 }94869487 TechTypes ePrereqTech = (TechTypes) GC.getBuildInfo(eBuild)->getFeatureTech(eFeature);94889489 // Clearing Feature doesn't require any Tech, so we can do it right now if we have to9490 if(ePrereqTech == NO_TECH)9491 {9492 return false;9493 }94949495 // Clearing eFeature requires a Tech, but we have it9496 if(GET_TEAM(getTeam()).GetTeamTechs()->HasTech(ePrereqTech))9497 {9498 return false;9499 }95009501 // Feature is blocking us!9502 return true;9503}