summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarkvater <Darkvater@openttd.org>2006-03-15 21:27:19 +0000
committerDarkvater <Darkvater@openttd.org>2006-03-15 21:27:19 +0000
commita390b6e4d19a293cfca2b6d0c2688a8a1b6f52fd (patch)
treed0e05fc1051ce979b584ab2f173ea4a7fb64b030
parent7cdf803d0bc187c9c2c73786ed6de7fb4eed0019 (diff)
downloadopenttd-a390b6e4d19a293cfca2b6d0c2688a8a1b6f52fd.tar.xz
(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.
-rw-r--r--rail_cmd.c4
-rw-r--r--tunnelbridge_cmd.c3
2 files changed, 3 insertions, 4 deletions
diff --git a/rail_cmd.c b/rail_cmd.c
index 7c8468034..61b5d3f07 100644
--- a/rail_cmd.c
+++ b/rail_cmd.c
@@ -427,7 +427,6 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
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 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
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;
}
diff --git a/tunnelbridge_cmd.c b/tunnelbridge_cmd.c
index 0034f10f7..191343845 100644
--- a/tunnelbridge_cmd.c
+++ b/tunnelbridge_cmd.c
@@ -714,7 +714,8 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags)
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 {