Bazaar developer reference

CvPlot::updateCenterUnit()

Defined in
CvPlot.cpp, line 663
Class
CvPlot
Hook name
CivHooks::CvPlot_updateCenterUnit

Hooks

static bool BeforeCvPlot_updateCenterUnit(CvPlot* self);static void AfterCvPlot_updateCenterUnit(CvPlot* self);static void ReplaceCvPlot_updateCenterUnit(void (*original)(CvPlot*), CvPlot* self);CivRegisterBefore<CivHooks::CvPlot_updateCenterUnit>(host, &BeforeCvPlot_updateCenterUnit);CivRegisterAfter<CivHooks::CvPlot_updateCenterUnit>(host, &AfterCvPlot_updateCenterUnit);CivRegisterReplace<CivHooks::CvPlot_updateCenterUnit>(host, &ReplaceCvPlot_updateCenterUnit);

Code

663void CvPlot::updateCenterUnit()664{665	if(!GC.IsGraphicsInitialized())666	{667		return;668	}669670	if(!isActiveVisible(true))671	{672		setCenterUnit(NULL);673		return;674	}675676	setCenterUnit(getSelectedUnit());677678	TeamTypes eActiveTeam = GC.getGame().getActiveTeam();679680	if(!getCenterUnit())681	{682		UnitHandle hBestDefender = getBestDefender(NO_PLAYER, GC.getGame().getActivePlayer());683		if(hBestDefender && hBestDefender->getDomainType() != DOMAIN_AIR && !hBestDefender->isInvisible(eActiveTeam,false))684			setCenterUnit(hBestDefender);685	}686687	// okay, all of the other checks failed - if there is any unit here, make it the center unit688	if(!getCenterUnit())689	{690		IDInfo* pUnitNode;691		CvUnit* pLoopUnit;692693		pUnitNode = headUnitNode();694695		if(pUnitNode != NULL)696		{697			pLoopUnit = GetPlayerUnit(*pUnitNode);698			if(pLoopUnit && !pLoopUnit->IsGarrisoned() && pLoopUnit->getDomainType() != DOMAIN_AIR && !pLoopUnit->isInvisible(eActiveTeam,false))699			{700				setCenterUnit(pLoopUnit);701			}702		}703	}704705	IDInfo* pUnitNode;706	CvUnit* pLoopUnit;707	CvUnit* pCenterUnit = getCenterUnit().pointer();708	pUnitNode = headUnitNode();709	while(pUnitNode != NULL)710	{711		pLoopUnit = GetPlayerUnit(*pUnitNode);712		pUnitNode = nextUnitNode(pUnitNode);713714		if(pLoopUnit)715		{716			auto_ptr<ICvUnit1> pDllUnit(new CvDllUnit(pLoopUnit));717718			if(pCenterUnit == pLoopUnit)719			{720				gDLL->GameplayUnitVisibility(pDllUnit.get(), true, false, 0.01f);721			}722			else723			{724				gDLL->GameplayUnitVisibility(pDllUnit.get(), false, false, 0.01f);725			}726		}727	}728}

Calls

Called by