summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorplanetmaker <planetmaker@openttd.org>2013-01-20 12:43:25 +0000
committerplanetmaker <planetmaker@openttd.org>2013-01-20 12:43:25 +0000
commit42883b9543fcb92acc6d3360cfb89f4ac79d2cef (patch)
tree0b8c99ccc98461f93acfe10e996436868c328d65
parent5fb6b7b9eb077cce6875467e7756743c8253e889 (diff)
downloadopenttd-42883b9543fcb92acc6d3360cfb89f4ac79d2cef.tar.xz
(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)
-rw-r--r--src/water_cmd.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp
index 580ffa4d5..ae5efada7 100644
--- a/src/water_cmd.cpp
+++ b/src/water_cmd.cpp
@@ -161,7 +161,9 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o)
/* 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 @@ void MakeWaterKeepingClass(TileIndex tile, Owner o)
c->infrastructure.water--;
DirtyCompanyInfrastructureWindows(c->index);
}
+ /* Sloped canals are locks and no natural water remains whatever the slope direction */
+ 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;
}
- wc = WATER_CLASS_INVALID;
}
if (wc == WATER_CLASS_SEA && z > 0) {