diff options
Diffstat (limited to 'road_cmd.c')
-rw-r--r-- | road_cmd.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/road_cmd.c b/road_cmd.c index a0c7066e3..79c3e213c 100644 --- a/road_cmd.c +++ b/road_cmd.c @@ -334,14 +334,19 @@ int32 CmdBuildRoad(int x, int y, uint32 flags, uint32 p1, uint32 p2) } #undef M - if (ti.map5 == 2) { - if (pieces & ROAD_Y) goto do_clear; - roaddir = AXIS_X; - } else if (ti.map5 == 1) { - if (pieces & ROAD_X) goto do_clear; - roaddir = AXIS_Y; - } else { - goto do_clear; + if (GetRailTileType(tile) != RAIL_TYPE_NORMAL) goto do_clear; + switch (GetTrackBits(tile)) { + case TRACK_BIT_X: + if (pieces & ROAD_X) goto do_clear; + roaddir = AXIS_Y; + break; + + case TRACK_BIT_Y: + if (pieces & ROAD_Y) goto do_clear; + roaddir = AXIS_X; + break; + + default: goto do_clear; } if (flags & DC_EXEC) { |