Bazaar developer reference

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

Defined in
CvAStar.cpp, line 2109
Hook name
CivHooks::StepValidAnyArea

Hooks

static bool BeforeStepValidAnyArea(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static void AfterStepValidAnyArea(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static int ReplaceStepValidAnyArea(int (*original)(CvAStarNode*, CvAStarNode*, int, const void*, CvAStar*), CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder);CivRegisterBefore<CivHooks::StepValidAnyArea>(host, &BeforeStepValidAnyArea);CivRegisterAfter<CivHooks::StepValidAnyArea>(host, &AfterStepValidAnyArea);CivRegisterReplace<CivHooks::StepValidAnyArea>(host, &ReplaceStepValidAnyArea);

Code

2108/// Step path finder - check validity of a coordinate (special case that allows any area)2109int StepValidAnyArea(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder)2110{2111	if(parent == NULL)2112	{2113		return TRUE;2114	}21152116	int iFlags = finder->GetInfo();2117	PlayerTypes ePlayer = (PlayerTypes)(iFlags & 0xFF);21182119	PlayerTypes eEnemy = *(PlayerTypes*)pointer;21202121	CvPlayer& thisPlayer = GET_PLAYER(ePlayer);21222123	CvMap& kMap = GC.getMap();2124	CvPlot* pNewPlot = kMap.plotUnchecked(node->m_iX, node->m_iY);21252126	//if(kMap.plotUnchecked(parent->m_iX, parent->m_iY)->getArea() != pNewPlot->getArea())2127	//{2128	//	return FALSE;2129	//}21302131	if(pNewPlot->isImpassable())2132	{2133		return FALSE;2134	}21352136	// Ocean hex and team can't navigate on oceans?2137	if (!GET_TEAM(thisPlayer.getTeam()).getEmbarkedAllWaterPassage())2138	{2139		if (pNewPlot->getTerrainType() == TERRAIN_OCEAN)2140		{2141			return FALSE;2142		}2143	}21442145	PlayerTypes ePlotOwnerPlayer = pNewPlot->getOwner();2146	if (ePlotOwnerPlayer != NO_PLAYER && ePlotOwnerPlayer != eEnemy && !pNewPlot->IsFriendlyTerritory(ePlayer))2147	{2148		CvPlayer& plotOwnerPlayer = GET_PLAYER(ePlotOwnerPlayer);2149		bool bPlotOwnerIsMinor = plotOwnerPlayer.isMinorCiv();21502151		if(!bPlotOwnerIsMinor)2152		{2153			TeamTypes eMyTeam = thisPlayer.getTeam();2154			TeamTypes ePlotOwnerTeam = plotOwnerPlayer.getTeam();21552156			if(!atWar(eMyTeam, ePlotOwnerTeam))2157			{2158				return FALSE;2159			}2160		}2161	}21622163	return TRUE;2164}

Calls

Called by