Mercurial > hg > openttd
diff src/station_cmd.cpp @ 8616:9e46ac001a8c draft
(svn r12199) -Codechange: Remove magic around the results of GetTileTrackStatus().
author | frosch <frosch@openttd.org> |
---|---|
date | Wed, 20 Feb 2008 17:49:50 +0000 |
parents | ae0c04ca28d2 |
children | 87ad83832ff4 |
line wrap: on
line diff
--- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2280,24 +2280,25 @@ } -static uint32 GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) +static TrackStatus GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) { + TrackBits trackbits = TRACK_BIT_NONE; + switch (mode) { case TRANSPORT_RAIL: if (IsRailwayStation(tile) && !IsStationTileBlocked(tile)) { - return TrackToTrackBits(GetRailStationTrack(tile)) * 0x101; + trackbits = TrackToTrackBits(GetRailStationTrack(tile)); } break; case TRANSPORT_WATER: /* buoy is coded as a station, it is always on open water */ if (IsBuoy(tile)) { - TrackBits ts = TRACK_BIT_ALL; + trackbits = TRACK_BIT_ALL; /* remove tracks that connect NE map edge */ - if (TileX(tile) == 0) ts &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT); + if (TileX(tile) == 0) trackbits &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT); /* remove tracks that connect NW map edge */ - if (TileY(tile) == 0) ts &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER); - return uint32(ts) * 0x101; + if (TileY(tile) == 0) trackbits &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER); } break; @@ -2307,10 +2308,10 @@ Axis axis = DiagDirToAxis(dir); if (side != INVALID_DIAGDIR) { - if (axis != DiagDirToAxis(side) || (IsStandardRoadStopTile(tile) && dir != side)) return 0; + if (axis != DiagDirToAxis(side) || (IsStandardRoadStopTile(tile) && dir != side)) break; } - return AxisToTrackBits(axis) * 0x101; + trackbits = AxisToTrackBits(axis); } break; @@ -2318,7 +2319,7 @@ break; } - return 0; + return CombineTrackStatus(TrackBitsToTrackdirBits(trackbits), TRACKDIR_BIT_NONE); }