Bazaar developer reference

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

Called by