diff --git a/npf.c b/npf.c index 5959ba947c..af2bb27455 100644 --- a/npf.c +++ b/npf.c @@ -467,8 +467,10 @@ static bool VehicleMayEnterTile(Owner owner, TileIndex tile, DiagDirection enter switch (GetTileType(tile)) { case MP_STREET: /* rail-road crossing : are we looking at the railway part? */ - if (IsLevelCrossing(tile) && GetCrossingTransportType(tile, TrackdirToTrack(DiagdirToDiagTrackdir(enterdir))) == TRANSPORT_RAIL) + if (IsLevelCrossing(tile) && + DiagDirToAxis(enterdir) != GetCrossingRoadAxis(tile)) { return IsTileOwner(tile, owner); /* Railway needs owner check, while the street is public */ + } break; case MP_TUNNELBRIDGE: diff --git a/rail.h b/rail.h index f8357ed35f..8bb0be4164 100644 --- a/rail.h +++ b/rail.h @@ -429,26 +429,6 @@ static inline SignalState GetSignalState(TileIndex tile, Trackdir trackdir) RailType GetTileRailType(TileIndex tile, Trackdir trackdir); -/** - * Gets the transport type of the given track on the given crossing tile. - * @return The transport type of the given track, either TRANSPORT_ROAD, - * TRANSPORT_RAIL. - */ -static inline TransportType GetCrossingTransportType(TileIndex tile, Track track) -{ - /* XXX: Nicer way to write this? */ - switch (track) { - /* When map5 bit 3 is set, the road runs in the y direction */ - case TRACK_X: - return (HASBIT(_m[tile].m5, 3) ? TRANSPORT_RAIL : TRANSPORT_ROAD); - case TRACK_Y: - return (HASBIT(_m[tile].m5, 3) ? TRANSPORT_ROAD : TRANSPORT_RAIL); - default: - assert(0); - } - return INVALID_TRANSPORT; -} - /** * Returns a pointer to the Railtype information for a given railtype * @param railtype the rail type which the information is requested for