changeset 19991:3f59c15c878b draft

(svn r24923) -Fix [FS#5441]: When an object built on a river is removed, restore the river, if possible also on slopes (based on patch by Supercheese)
author planetmaker <planetmaker@openttd.org>
date Sun, 20 Jan 2013 12:43:25 +0000
parents 0ab090604408
children 69d87522a042
files src/water_cmd.cpp
diffstat 1 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/water_cmd.cpp
+++ b/src/water_cmd.cpp
@@ -161,7 +161,9 @@
 
 	/* Autoslope might turn an originally canal or river tile into land */
 	int z;
-	if (GetTileSlope(tile, &z) != SLOPE_FLAT) {
+	Slope slope = GetTileSlope(tile, &z);
+
+	if (slope != SLOPE_FLAT) {
 		if (wc == WATER_CLASS_CANAL) {
 			/* If we clear the canal, we have to remove it from the infrastructure count as well. */
 			Company *c = Company::GetIfValid(o);
@@ -169,8 +171,14 @@
 				c->infrastructure.water--;
 				DirtyCompanyInfrastructureWindows(c->index);
 			}
+			/* Sloped canals are locks and no natural water remains whatever the slope direction */
+			wc = WATER_CLASS_INVALID;
 		}
-		wc = WATER_CLASS_INVALID;
+
+		/* There must not be water sloped invalidly, whatever class it may be */
+		if (GetInclinedSlopeDirection(slope) == INVALID_DIAGDIR) {
+			wc = WATER_CLASS_INVALID;
+		}
 	}
 
 	if (wc == WATER_CLASS_SEA && z > 0) {