summaryrefslogtreecommitdiff
path: root/road_cmd.c
diff options
context:
space:
mode:
authortron <tron@openttd.org>2006-03-16 15:16:27 +0000
committertron <tron@openttd.org>2006-03-16 15:16:27 +0000
commitb8da06ddb11f234451864e0b454163ebb546e4cd (patch)
tree79a0e9518fd43cbe914bddcaebf4983201598bc8 /road_cmd.c
parentd6134455a5aaa7b247545886be573a555cdfc2be (diff)
downloadopenttd-b8da06ddb11f234451864e0b454163ebb546e4cd.tar.xz
(svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
Diffstat (limited to 'road_cmd.c')
-rw-r--r--road_cmd.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/road_cmd.c b/road_cmd.c
index 2b50cf6ff..5441075ce 100644
--- a/road_cmd.c
+++ b/road_cmd.c
@@ -129,11 +129,11 @@ int32 CmdRemoveRoad(int x, int y, uint32 flags, uint32 p1, uint32 p2)
case MP_TUNNELBRIDGE:
if (!EnsureNoVehicleZ(tile, TilePixelHeight(tile))) return CMD_ERROR;
- if ((ti.map5 & 0xE9) == 0xE8) {
- if (pieces & ROAD_X) return CMD_ERROR;
- } else if ((ti.map5 & 0xE9) == 0xE9) {
- if (pieces & ROAD_Y) return CMD_ERROR;
- } else {
+ if (!IsBridge(tile) ||
+ !IsBridgeMiddle(tile) ||
+ !IsTransportUnderBridge(tile) ||
+ GetTransportTypeUnderBridge(tile) != TRANSPORT_ROAD ||
+ (pieces & ComplementRoadBits(GetRoadBitsUnderBridge(tile))) != 0) {
return CMD_ERROR;
}
@@ -357,19 +357,23 @@ int32 CmdBuildRoad(int x, int y, uint32 flags, uint32 p1, uint32 p2)
return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
}
- /* is this middle part of a bridge? */
- if ((ti.map5 & 0xC0) != 0xC0) goto do_clear;
+ if (!IsBridge(tile) || !IsBridgeMiddle(tile)) goto do_clear;
/* only allow roads pertendicular to bridge */
- if (((pieces & ROAD_Y) != 0) == ((ti.map5 & 0x01U) != 0)) goto do_clear;
+ if ((pieces & (GetBridgeAxis(tile) == AXIS_X ? ROAD_X : ROAD_Y)) != 0) {
+ goto do_clear;
+ }
/* check if clear land under bridge */
- if ((ti.map5 & 0xF8) == 0xE8) { /* road under bridge */
- return_cmd_error(STR_1007_ALREADY_BUILT);
- } else if ((ti.map5 & 0xE0) == 0xE0) { /* other transport route under bridge */
- return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
- } else if ((ti.map5 & 0xF8) == 0xC8) { /* water under bridge */
- return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
+ if (IsTransportUnderBridge(tile)) {
+ switch (GetTransportTypeUnderBridge(tile)) {
+ case TRANSPORT_ROAD: return_cmd_error(STR_1007_ALREADY_BUILT);
+ default: return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
+ }
+ } else {
+ if (IsWaterUnderBridge(tile)) {
+ return_cmd_error(STR_3807_CAN_T_BUILD_ON_WATER);
+ }
}
/* all checked, can build road now! */