summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2009-08-20 15:59:35 +0000
committeryexo <yexo@openttd.org>2009-08-20 15:59:35 +0000
commit367ff2375af6a7eeac122186335a193361bf06f2 (patch)
treeef91fbeac40cc0631685169855e7084d2bc2bc57
parentedcaf8aa3ac6a739e81f753cd739b012f0af4933 (diff)
downloadopenttd-367ff2375af6a7eeac122186335a193361bf06f2.tar.xz
(svn r17239) -Change [FS#2802]: allow overbuilding the front tile of a roadstation / roaddepot with road
to be consistent with overbuilding the front tile of tunnels/bridges and also to make it easier for AIs to connect roadstations and roaddepots to the road in front of it
-rw-r--r--src/road_cmd.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp
index a7484d305..529f2e367 100644
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
@@ -516,9 +516,11 @@ CommandCost CmdBuildRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
if (HasTileRoadType(tile, rt)) return_cmd_error(STR_ERROR_ALREADY_BUILT);
break;
- default:
case ROAD_TILE_DEPOT:
+ if ((GetAnyRoadBits(tile, rt) & pieces) == pieces) return_cmd_error(STR_ERROR_ALREADY_BUILT);
goto do_clear;
+
+ default: NOT_REACHED();
}
break;
@@ -565,6 +567,7 @@ CommandCost CmdBuildRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
}
case MP_STATION: {
+ if ((GetAnyRoadBits(tile, rt) & pieces) == pieces) return_cmd_error(STR_ERROR_ALREADY_BUILT);
if (!IsDriveThroughStopTile(tile)) goto do_clear;
RoadBits curbits = AxisToRoadBits(DiagDirToAxis(GetRoadStopDir(tile)));
@@ -575,8 +578,8 @@ CommandCost CmdBuildRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32
} break;
case MP_TUNNELBRIDGE:
- if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return CMD_ERROR;
- if (MirrorRoadBits(DiagDirToRoadBits(GetTunnelBridgeDirection(tile))) != pieces) return CMD_ERROR;
+ if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) goto do_clear;
+ if (MirrorRoadBits(DiagDirToRoadBits(GetTunnelBridgeDirection(tile))) != pieces) goto do_clear;
if (HasTileRoadType(tile, rt)) return_cmd_error(STR_ERROR_ALREADY_BUILT);
/* Don't allow adding roadtype to the bridge/tunnel when vehicles are already driving on it */
if (HasVehicleOnTunnelBridge(tile, GetOtherTunnelBridgeEnd(tile))) return CMD_ERROR;