diff --git a/npf.c b/npf.c --- a/npf.c +++ b/npf.c @@ -467,8 +467,10 @@ static bool VehicleMayEnterTile(Owner ow 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 --- a/rail.h +++ b/rail.h @@ -430,26 +430,6 @@ RailType GetTileRailType(TileIndex tile, /** - * 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 * @return The pointer to the RailtypeInfo