Bazaar developer reference

CvPlot::setTerrainType(TerrainTypes, bool, bool)

Defined in
CvPlot.cpp, line 6202
Class
CvPlot
Hook name
CivHooks::CvPlot_setTerrainType
Lua events
GameEvents.TerraformingPlot

Hooks

static bool BeforeCvPlot_setTerrainType(CvPlot* self, TerrainTypes eNewValue, bool bRecalculate, bool bRebuildGraphics);static void AfterCvPlot_setTerrainType(CvPlot* self, TerrainTypes eNewValue, bool bRecalculate, bool bRebuildGraphics);static void ReplaceCvPlot_setTerrainType(void (*original)(CvPlot*, TerrainTypes, bool, bool), CvPlot* self, TerrainTypes eNewValue, bool bRecalculate, bool bRebuildGraphics);CivRegisterBefore<CivHooks::CvPlot_setTerrainType>(host, &BeforeCvPlot_setTerrainType);CivRegisterAfter<CivHooks::CvPlot_setTerrainType>(host, &AfterCvPlot_setTerrainType);CivRegisterReplace<CivHooks::CvPlot_setTerrainType>(host, &ReplaceCvPlot_setTerrainType);

Code

6202void CvPlot::setTerrainType(TerrainTypes eNewValue, bool bRecalculate, bool bRebuildGraphics)6203{6204	bool bUpdateSight;62056206#if defined(MOD_BUGFIX_PLOT_VALIDATION)6207	if (eNewValue <= NO_TERRAIN || eNewValue >= NUM_TERRAIN_TYPES) return;6208#endif62096210	if(getTerrainType() != eNewValue)6211	{6212		if((getTerrainType() != NO_TERRAIN) &&6213		        (eNewValue != NO_TERRAIN) &&6214		        ((GC.getTerrainInfo(getTerrainType())->getSeeFromLevel() != GC.getTerrainInfo(eNewValue)->getSeeFromLevel()) ||6215		         (GC.getTerrainInfo(getTerrainType())->getSeeThroughLevel() != GC.getTerrainInfo(eNewValue)->getSeeThroughLevel())))6216		{6217			bUpdateSight = true;6218		}6219		else6220		{6221			bUpdateSight = false;6222		}62236224		if(bUpdateSight)6225		{6226			updateSeeFromSight(false);6227		}62286229#if defined(MOD_EVENTS_TERRAFORMING)6230		if (MOD_EVENTS_TERRAFORMING) {6231			GAMEEVENTINVOKE_HOOK(GAMEEVENT_TerraformingPlot, TERRAFORMINGEVENT_TERRAIN, m_iX, m_iY, 0, eNewValue, m_eTerrainType, -1, -1);6232		}6233#endif62346235		m_eTerrainType = eNewValue;62366237		updateYield();6238		updateImpassable();62396240		if(bUpdateSight)6241		{6242			updateSeeFromSight(true);6243		}62446245		const bool bTypeIsWater = GC.getTerrainInfo(getTerrainType())->isWater();6246		if(bTypeIsWater != isWater())6247		{6248			setPlotType((bTypeIsWater)? PLOT_OCEAN : PLOT_LAND, bRecalculate, bRebuildGraphics);6249		}6250	}6251}

Calls

Called by