(svn r3893) - Fix: Properly set back the owner of a crossing/road-under bridge after removing it. For crossings we can always use .m2 because it is already 0 when not owned by a town.
authorDarkvater
Wed, 15 Mar 2006 21:27:19 +0000
changeset 3220 30c21af90cf1
parent 3219 bc39bbdad0a1
child 3221 e0450d4ec188
(svn r3893) - Fix: Properly set back the owner of a crossing/road-under bridge after removing it. For crossings we can always use .m2 because it is already 0 when not owned by a town.
rail_cmd.c
tunnelbridge_cmd.c
--- a/rail_cmd.c	Wed Mar 15 21:09:10 2006 +0000
+++ b/rail_cmd.c	Wed Mar 15 21:27:19 2006 +0000
@@ -427,7 +427,6 @@
 			break;
 
 		case MP_STREET: {
-			uint town;
 			if (!IsLevelCrossing(tile)) return CMD_ERROR;
 
 			/* This is a crossing, let's check if the direction is correct */
@@ -436,8 +435,7 @@
 			if (!(flags & DC_EXEC))
 				return _price.remove_rail;
 
-			town = (_m[tile].m3 == OWNER_TOWN) ? _m[tile].m2 : 0;
-			MakeRoadNormal(tile, _m[tile].m3, GetCrossingRoadBits(tile), town);
+			MakeRoadNormal(tile, _m[tile].m3, GetCrossingRoadBits(tile), _m[tile].m2);
 			break;
 		}
 
--- a/tunnelbridge_cmd.c	Wed Mar 15 21:09:10 2006 +0000
+++ b/tunnelbridge_cmd.c	Wed Mar 15 21:27:19 2006 +0000
@@ -714,7 +714,8 @@
 				if (GB(_m[c].m5, 3, 2) == TRANSPORT_RAIL) {
 					MakeRailNormal(c, GetTileOwner(c), _m[c].m5 & 1 ? TRACK_BIT_X : TRACK_BIT_Y, GB(_m[c].m3, 0, 3));
 				} else {
-					MakeRoadNormal(c, GetTileOwner(c), _m[c].m5 & 1 ? ROAD_X : ROAD_Y, 0); // XXX Determine town, missing till now
+					uint town = IsTileOwner(c, OWNER_TOWN) ? ClosestTownFromTile(c, (uint)-1)->index : 0;
+					MakeRoadNormal(c, GetTileOwner(c), _m[c].m5 & 1 ? ROAD_X : ROAD_Y, town);
 				}
 				MarkTileDirtyByTile(c);
 			} else {