(svn r12100) -Fix (r12042): check for water class of surrounding tiles fails for buoys at map borders
authorsmatz
Sun, 10 Feb 2008 14:00:52 +0000
changeset 9021 6cacfba4ef5e
parent 9020 fb90995f3abe
child 9022 6a009a1106fd
(svn r12100) -Fix (r12042): check for water class of surrounding tiles fails for buoys at map borders
src/openttd.cpp
src/water_cmd.cpp
--- a/src/openttd.cpp	Sun Feb 10 12:01:14 2008 +0000
+++ b/src/openttd.cpp	Sun Feb 10 14:00:52 2008 +0000
@@ -2364,6 +2364,12 @@
 
 	if (CheckSavegameVersion(87)) {
 		for (TileIndex t = 0; t < map_size; t++) {
+			if (!IsTileType(t, MP_VOID) && (TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() || TileY(t) == MapMaxY())) {
+				/* Some version 86 savegames have wrong water class at map borders (under buoy, or after removing buoy).
+				 * This conversion has to be done before buoys with invalid owner are removed. */
+				SetWaterClass(t, WATER_CLASS_SEA);
+			}
+
 			if (IsBuoyTile(t) || IsDriveThroughStopTile(t) || IsTileType(t, MP_WATER)) {
 				Owner o = GetTileOwner(t);
 				if (IsValidPlayer(o) && !GetPlayer(o)->is_active) {
--- a/src/water_cmd.cpp	Sun Feb 10 12:01:14 2008 +0000
+++ b/src/water_cmd.cpp	Sun Feb 10 14:00:52 2008 +0000
@@ -111,6 +111,12 @@
 	/* Mark tile dirty in all cases */
 	MarkTileDirtyByTile(t);
 
+	if (TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() || TileY(t) == MapMaxY()) {
+		/* tiles at map borders are always WATER_CLASS_SEA */
+		SetWaterClass(t, WATER_CLASS_SEA);
+		return;
+	}
+
 	bool has_water = false;
 	bool has_canal = false;
 	bool has_river = false;