CvUnit::UnitBuild(BuildTypes)
- Defined in
- CvUnit.cpp, line 23251
- Class
- CvUnit
- Hook name
CivHooks::CvUnit_UnitBuild
Hooks
static bool BeforeCvUnit_UnitBuild(CvUnit* self, BuildTypes eBuild, bool& result);static void AfterCvUnit_UnitBuild(CvUnit* self, BuildTypes eBuild, bool& result);static bool ReplaceCvUnit_UnitBuild(bool (*original)(CvUnit*, BuildTypes), CvUnit* self, BuildTypes eBuild);CivRegisterBefore<CivHooks::CvUnit_UnitBuild>(host, &BeforeCvUnit_UnitBuild);CivRegisterAfter<CivHooks::CvUnit_UnitBuild>(host, &AfterCvUnit_UnitBuild);CivRegisterReplace<CivHooks::CvUnit_UnitBuild>(host, &ReplaceCvUnit_UnitBuild);
Code
23250// Returns true if build should continue...23251bool CvUnit::UnitBuild(BuildTypes eBuild)23252{23253 VALIDATE_OBJECT23254 CvPlot* pPlot;23255 bool bContinue;2325623257 CvAssert(getOwner() != NO_PLAYER);23258 CvAssertMsg(eBuild < GC.getNumBuildInfos(), "Invalid Build");2325923260 bContinue = false;2326123262 pPlot = plot();23263 if(! pPlot)23264 {23265 return false;23266 }2326723268 CvBuildInfo* pkBuildInfo = GC.getBuildInfo(eBuild);23269 if (pkBuildInfo)23270 {23271 ImprovementTypes eImprovement = (ImprovementTypes)pkBuildInfo->getImprovement();23272 if(eImprovement != NO_IMPROVEMENT)23273 {23274 if(IsAutomated())23275 {23276 if((pPlot->getImprovementType() != NO_IMPROVEMENT) && (pPlot->getImprovementType() != (ImprovementTypes)(GC.getRUINS_IMPROVEMENT())))23277 {23278 ResourceTypes eResource = (ResourceTypes)pPlot->getNonObsoleteResourceType(GET_PLAYER(getOwner()).getTeam());23279 if((eResource == NO_RESOURCE) || !GC.getImprovementInfo(eImprovement)->IsImprovementResourceTrade(eResource))23280 {23281 if(GC.getImprovementInfo(eImprovement)->GetImprovementPillage() != NO_IMPROVEMENT)23282 {23283 return false;23284 }23285 }23286 }23287 }23288 }23289 }2329023291 CvAssertMsg(atPlot(*pPlot), "Unit is expected to be at pPlot");2329223293 // Don't check for Gold cost here (2nd false) because this function is called from continueMission... we spend the Gold then check to see if we can Build23294 if(canBuild(pPlot, eBuild, false, false))23295 {23296 bContinue = true;2329723298 if(build(eBuild))23299 {23300 bContinue = false;23301 }23302 }2330323304 return bContinue;23305}
Calls
- CvBuildInfo::getImprovement() const
- CvGlobals::getBuildInfo(BuildTypes)
- CvGlobals::getImprovementInfo(ImprovementTypes)
- CvGlobals::getRUINS_IMPROVEMENT()
- CvImprovementEntry::GetImprovementPillage() const
- CvImprovementEntry::IsImprovementResourceTrade(int) const
- CvPlayer::getTeam() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlot::getImprovementType() const
- CvPlot::getNonObsoleteResourceType(TeamTypes) const
- CvUnit::build(BuildTypes)
- CvUnit::canBuild(const CvPlot *, BuildTypes, bool, bool) const
- CvUnit::getOwner() const
- CvUnit::IsAutomated() const
- CvUnit::plot() const