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}