Bazaar developer reference

TradeRouteLandValid(CvAStarNode *, CvAStarNode *, int, const void *, CvAStar *)

Defined in
CvAStar.cpp, line 4041
Hook name
CivHooks::TradeRouteLandValid

Hooks

static bool BeforeTradeRouteLandValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static void AfterTradeRouteLandValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static int ReplaceTradeRouteLandValid(int (*original)(CvAStarNode*, CvAStarNode*, int, const void*, CvAStar*), CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder);CivRegisterBefore<CivHooks::TradeRouteLandValid>(host, &BeforeTradeRouteLandValid);CivRegisterAfter<CivHooks::TradeRouteLandValid>(host, &AfterTradeRouteLandValid);CivRegisterReplace<CivHooks::TradeRouteLandValid>(host, &ReplaceTradeRouteLandValid);

Code

4041int TradeRouteLandValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder)4042{4043	if(parent == NULL)4044	{4045		return TRUE;4046	}40474048	CvMap& kMap = GC.getMap();4049	CvPlot* pNewPlot = kMap.plotUnchecked(node->m_iX, node->m_iY);40504051#if !defined(MOD_BUGFIX_MINOR)4052	if(kMap.plotUnchecked(parent->m_iX, parent->m_iY)->getArea() != pNewPlot->getArea())4053	{4054		return FALSE;4055	}4056#endif40574058	if (pNewPlot->isWater())4059	{4060#if defined(MOD_BUGFIX_MINOR)4061		if (pNewPlot->IsAllowsWalkWater()) {4062			return TRUE;4063		}4064#endif40654066		return FALSE;4067	}40684069#if defined(MOD_BUGFIX_MINOR)4070	CvPlot* pOldPlot = kMap.plotUnchecked(parent->m_iX, parent->m_iY);4071	if (pOldPlot->getArea() != pNewPlot->getArea())4072	{4073		if (pOldPlot->IsAllowsWalkWater()) {4074			return TRUE;4075		}40764077		return FALSE;4078	}4079#endif40804081#if defined(MOD_GLOBAL_ALPINE_PASSES)4082	bool bMountain = pNewPlot->isMountain();4083	if (bMountain && MOD_GLOBAL_ALPINE_PASSES && pNewPlot->getRouteType() != NO_ROUTE) {4084		// Any land unit may travel over a mountain with a pass4085		bMountain = false;4086	}40874088	if (bMountain || pNewPlot->isImpassable())4089#else4090	if (pNewPlot->isMountain() || pNewPlot->isImpassable())4091#endif4092	{4093		return FALSE;4094	}40954096	return TRUE;4097}

Calls

Called by