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}