Bazaar developer reference

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

Defined in
CvAStar.cpp, line 4170
Hook name
CivHooks::TradeRouteWaterValid

Hooks

static bool BeforeTradeRouteWaterValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static void AfterTradeRouteWaterValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static int ReplaceTradeRouteWaterValid(int (*original)(CvAStarNode*, CvAStarNode*, int, const void*, CvAStar*), CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder);CivRegisterBefore<CivHooks::TradeRouteWaterValid>(host, &BeforeTradeRouteWaterValid);CivRegisterAfter<CivHooks::TradeRouteWaterValid>(host, &AfterTradeRouteWaterValid);CivRegisterReplace<CivHooks::TradeRouteWaterValid>(host, &ReplaceTradeRouteWaterValid);

Code

4170int TradeRouteWaterValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder)4171{4172	if(parent == NULL)4173	{4174		return TRUE;4175	}41764177	const TradePathCacheData* pCacheData = reinterpret_cast<const TradePathCacheData*>(finder->GetScratchBuffer());41784179	CvMap& kMap = GC.getMap();4180	CvPlot* pNewPlot = kMap.plotUnchecked(node->m_iX, node->m_iY);41814182#if defined(MOD_GLOBAL_PASSABLE_FORTS)4183	if (!(pNewPlot->isCity() || pNewPlot->isPassableImprovement()))4184#else4185	if (!pNewPlot->isCity())4186#endif4187	{4188		if (!pNewPlot->isWater())4189		{4190			return FALSE;4191		}41924193		if (pNewPlot->getTerrainType() != (TerrainTypes) GC.getSHALLOW_WATER_TERRAIN())	// Quicker shallow water test since we know that the plot is water already4194		{4195			if (!pCacheData->CanEmbarkAllWaterPassage())4196			{4197				return FALSE;4198			}4199		}42004201		CvPlot* pParentPlot = kMap.plotUnchecked(parent->m_iX, parent->m_iY);4202#if defined(MOD_GLOBAL_PASSABLE_FORTS)4203		if (!(pParentPlot->isCity() || pParentPlot->isPassableImprovement()))4204#else4205		if (!pParentPlot->isCity())4206#endif4207		{4208			if(pParentPlot->getArea() != pNewPlot->getArea())4209			{4210				return FALSE;4211			}4212		}42134214		if(pNewPlot->isImpassable())4215		{4216			return FALSE;4217		}4218	}42194220	return TRUE;4221}

Calls

Called by