Bazaar developer reference

CvCity::CanPlaceUnitHere(UnitTypes)

Defined in
CvCity.cpp, line 13789
Class
CvCity
Hook name
CivHooks::CvCity_CanPlaceUnitHere

Hooks

static bool BeforeCvCity_CanPlaceUnitHere(CvCity* self, UnitTypes eUnitType, bool& result);static void AfterCvCity_CanPlaceUnitHere(CvCity* self, UnitTypes eUnitType, bool& result);static bool ReplaceCvCity_CanPlaceUnitHere(bool (*original)(CvCity*, UnitTypes), CvCity* self, UnitTypes eUnitType);CivRegisterBefore<CivHooks::CvCity_CanPlaceUnitHere>(host, &BeforeCvCity_CanPlaceUnitHere);CivRegisterAfter<CivHooks::CvCity_CanPlaceUnitHere>(host, &AfterCvCity_CanPlaceUnitHere);CivRegisterReplace<CivHooks::CvCity_CanPlaceUnitHere>(host, &ReplaceCvCity_CanPlaceUnitHere);

Code

13789bool CvCity::CanPlaceUnitHere(UnitTypes eUnitType)13790{13791	VALIDATE_OBJECT13792	bool bCombat = false;1379313794	CvUnitEntry* pkUnitInfo = GC.getUnitInfo(eUnitType);13795	if(pkUnitInfo == NULL)13796		return false;1379713798	// slewis - modifying 1upt13799	if (pkUnitInfo->IsTrade())13800	{13801		return true;13802	}1380313804	if(pkUnitInfo->GetCombat() > 0 || pkUnitInfo->GetRange() > 0)13805	{13806		bCombat = true;13807	}1380813809#if defined(MOD_GLOBAL_STACKING_RULES)13810	int iSameTypeUnits = 0;13811#endif1381213813	CvPlot* pPlot = plot();1381413815	const IDInfo* pUnitNode;13816	const CvUnit* pLoopUnit;1381713818	pUnitNode = pPlot->headUnitNode();1381913820	while(pUnitNode != NULL)13821	{13822		pLoopUnit = ::getUnit(*pUnitNode);13823		pUnitNode = pPlot->nextUnitNode(pUnitNode);1382413825		if(pLoopUnit != NULL)13826		{13827			// if a trade unit is here, ignore13828			if (pLoopUnit->isTrade())13829			{13830				continue;13831			}1383213833			// Units of the same type OR Units belonging to different civs13834			if(CvGameQueries::AreUnitsSameType(eUnitType, pLoopUnit->getUnitType()))13835			{13836#if defined(MOD_GLOBAL_STACKING_RULES)13837				if (++iSameTypeUnits >= GC.getCITY_UNIT_LIMIT())13838#endif13839				return false;13840			}13841		}13842	}1384313844	return true;13845}

Calls

Called by